我正在实现一个自定义 CNN,现在正在尝试应用 GridSearch 进行超参数调整。我已经包含了可能有用的脚本部分。任何帮助将不胜感激。我认为自己是 python 和深度学习的初学者。
trainDirectory = "../Images/DATA3/Training"
testDirectory = "../Images/DATA3/Test"
trainingGenerator = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.1,
horizontal_flip = True)
testingGenerator = ImageDataGenerator(rescale = 1./255)
trainingSet = trainingGenerator.flow_from_directory(trainDirectory,
target_size = (101, 168),
batch_size = 16,
class_mode = 'binary')
testingSet = testingGenerator.flow_from_directory(testDirectory,
target_size = (101,168),
batch_size = 16,
class_mode = "binary",
)
imageSize = \[101,168,3\]
model = Sequential()
model.add(Conv2D(filters=16,kernel_size=(3,3),input_shape=imageSize,activation="relu",padding="same"))
model.add(MaxPool2D(strides=2,pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(64,activation="relu"))
model.add(Dense(1,activation="sigmoid"))
要使用 GridSearchCV 微调超参数,请首先安装
scikeras
图书馆。预处理数据并定义模型。接下来,定义一个
包含超参数名称及其潜在值的字典。裹
您的模型属于 KerasClassifier
类。最后传递包装好的模型
和超参数字典到 GridSearchCV 并启动训练
用fit方法进行处理。我已经实现了 GridSearchCv ,请参阅gist。