【发布时间】:2020-09-21 14:32:32
【问题描述】:
我尝试为我的二值图像分类器实现 K 折交叉验证,但我一直在苦苦挣扎,因为我一直在处理整个数据处理方面的问题。在我尝试 K 折叠之前,我已经在下面包含了我的代码(它很长而且很混乱 - 道歉),因为它出现了可怕的错误。任何建议或支持将不胜感激。我相信在这里使用 K 折叠是正确的方法,但如果不是,请告诉我。非常感谢!
我想知道如何重新格式化我的数据以创建单独的折叠,因为几乎每个教程都使用 .csv 文件;但是,我只是有两个包含图像的不同文件夹,要么分为两个单独的类别(用于训练数据),要么只是一个单一类别(用于测试数据)。
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
from keras.regularizers import l2
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import EarlyStopping
import numpy as np
import matplotlib.pyplot as plt
classifier = Sequential()
classifier.add(Conv2D(32, (3 , 3), input_shape = (256, 256, 3), activation = 'relu', kernel_regularizer=l2(0.01)))
classifier.add(MaxPooling2D(pool_size=(2,2)))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation='relu'))
classifier.add(Dropout(0.5))
classifier.add(Dense(units=1, activation='sigmoid'))
classifier.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])
train_datagen = ImageDataGenerator(rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, validation_split=0.2)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'train',
target_size=(256, 256),
batch_size=32,
class_mode='binary',
subset='training') # set as training data
validation_generator = train_datagen.flow_from_directory(
'train', # same directory as training data
target_size=(256, 256),
batch_size=32,
class_mode='binary',
subset='validation')
test_set = test_datagen.flow_from_directory('test', target_size = (256,256), batch_size=10, class_mode='binary')
history = classifier.fit_generator(train_generator, steps_per_epoch=40, epochs=100, validation_data=validation_generator)
classifier.save('50epochmodel')
test_images = np.array(list(next(test_set)[:1]))[0]
probabilities = classifier.predict(test_images)
【问题讨论】:
标签: python machine-learning keras conv-neural-network k-fold