在测试数据上训练 CNN 网络得分之前

Before training the CNN network score on the testing data

我有一个简单的二进制图像分类 CNN 网络。下面是代码

model = Sequential()

model.add(Conv2D(32, kernel_size=(3,3), padding='same',
                     kernel_initializer=gabor_init, input_shape=(32, 32, 1)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))

model.add(Conv2D(32, kernel_size=(3,3), padding='same', kernel_initializer=gabor_init))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))

model.add(Conv2D(64, kernel_size=(3,3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))


model.add(Flatten())
model.add(Dense(128,activation='relu'))
model.add(Dropout(0.4))

model.add(Dense(2,input_dim=128,activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='rmsprop',metrics=['accuracy'])

model.summary()

from sklearn.model_selection import train_test_split
trainX,testX,trainY,testY=train_test_split(Xdata,Ytarget,test_size=.3)

history=model.fit(trainX,trainY,epochs=70,batch_size = 64, 
                         verbose = 1,validation_split=.3)

print(model.evaluate(testX,testY))

我在这里训练模型然后验证模型。我的问题是

我想在训练前在测试数据上检查模型;因为我使用的是 Gabor 内核初始化器,所以我想在训练前看看这个过滤器是如何工作的。在那种情况下,我是否需要添加`model.fit()?我有点困惑。

对代码的最后部分有任何建议或修改,以便模型可以在训练前在测试数据上进行测试吗?

keras 中定义模型后,您只需使用 model.compile() 编译它,以便能够对初始未训练的模型调用预测权重。 model.fit() 仅在训练模型时更新权重,不会影响任何配置设置。