Python 如何使用目录中的keras图像数据集进行交叉验证?
我在keras中有一个图像数据集,我直接从各自的功能在列车和测试之间分别加载该数据集:Python 如何使用目录中的keras图像数据集进行交叉验证?,python,keras,scikit-learn,cross-validation,Python,Keras,Scikit Learn,Cross Validation,我在keras中有一个图像数据集,我直接从各自的功能在列车和测试之间分别加载该数据集: from tensorflow import keras tds = keras.preprocessing\ .image_dataset_from_directory('dataset_folder', seed=123, validation_split=0.35, subset='training') vds = kera
from tensorflow import keras
tds = keras.preprocessing\
.image_dataset_from_directory('dataset_folder', seed=123,
validation_split=0.35, subset='training')
vds = keras.preprocessing\
.image_dataset_from_directory('dataset_folder', seed=123,
validation_split=0.35, subset='validation')
然后我经历了我的神经网络的通常阶段:
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
num_classes = 5
model = Sequential([
layers.experimental.preprocessing.Rescaling(1.0/255,
input_shape=(256, 256, 3)),
layers.Conv2D(16, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(num_classes)])
model\
.compile(optimizer='adam', metrics=['accuracy'],
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True))
hist = model.fit(tds, validation_data=vds, epochs=15)
如何在
sklearn.model_selection
中使用KFold
或StratifiedKFold
实现交叉验证?如果为了能够做到这一点,我必须改变数据的加载方式,我也很高兴知道如何做到这一点。看看这些关于在Keras中实施交叉验证的建议:
使用image_dataset_从_目录加载数据将生成一个tf.data.dataset对象,我不确定这是否有助于上述实现。一种替代方法是将图像转换为Numpy阵列,然后通过K-fold进行处理。为此,您可以参考以下内容:
注:上述机器学习掌握链接中提到了以下声明:
交叉验证通常不用于评估深度学习模型,因为计算开销较大。例如,k-折叠交叉验证通常与5或10个折叠一起使用。因此,必须构建和评估5或10个模型,这大大增加了模型的评估时间
我读过一些链接,但老实说,它们对我没有帮助。我设法创建了折叠,但它需要重构代码以加载数据。无论如何,谢谢你的帮助。