gpt4 book ai didi

machine-learning - Keras:使用批量归一化对同一数据集进行不同的训练和验证结果

转载 作者:行者123 更新时间:2023-11-30 09:19:42 27 4
gpt4 key购买 nike

即使我使用相同的数据集,我的训练分类较高,但验证分类较低。仅在使用批量归一化时才会出现此问题。我是否正确实现了它?

使用批量归一化的代码:

train_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
directory = '../ImageFilter/Images/',
target_size=(img_rows, img_cols),
batch_size=batch_size,
class_mode='categorical',
shuffle=True)

model = Sequential()

model.add(Convolution2D(16,
kernel_size=(3, 3),
strides=(2,2),
activation='relu',
input_shape=(img_rows, img_cols, 3)))
model.add(BatchNormalization())
model.add(MaxPooling2D((2,2), strides=(2,2)))

model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(2, activation='softmax'))

model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics = ['accuracy'])
epochs = 100
patience = 6
n_images = 91
file_path = 'imageFilterCNN.hdf5'

checkpointer = ModelCheckpoint(file_path, monitor='val_acc', verbose=0, save_best_only=True)
earlystop = EarlyStopping(monitor='val_acc', patience=patience, verbose=0, mode='auto')
tboard = TensorBoard('./logs')

model.fit_generator(
train_generator,
steps_per_epoch=n_images// batch_size,
epochs=epochs,
callbacks=[checkpointer, earlystop, tboard],
validation_data=train_generator,
validation_steps=n_images// batch_size)

Outputs: Epoch 15/100 11/11 [==============================] - 2s - loss: 0.0092 - acc: 1.0000 - val_loss: 3.0321 - val_acc: 0.5568

最佳答案

您正在第一(输入)层应用批量归一化,这很可能是一个错误。你为什么要这样做?您的输入是图像,并且您非常清楚如何标准化您的输入 - 事实上这就是您在第一行中所做的事情。再次应用标准化是没有意义的。

批量归一化应用于隐藏层,以便数据不会变得太大或太小。没有简单、通用的方法可以做到这一点,因此 Sergey Ioffe and Christian Szegedy 引入了这个特殊层。 .

关于machine-learning - Keras:使用批量归一化对同一数据集进行不同的训练和验证结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com