【发布时间】:2023-04-04 20:50:02
【问题描述】:
我正在用大约 10,000 张图像训练一个 covnet,并注意到将优化器从 opt = SGD() 切换到 opt = 'adam' 会导致精度大幅降低,同时保持所有其他参数相同。使用 SGD(),我可以达到大约 80% 的准确度(在每个 epoch 之后逐渐增加)。对于 Adam,我在每个 epoch 都被困在 22.25% 的验证准确率上。
我想了解造成这种情况的可能原因。
参数
dropout_prob = 0.2
activation_function = 'relu'
loss_function = 'categorical_crossentropy'
batch_size = 32
epoch_count = 20
num_classes = 3
型号
model = Sequential()
model.add(Conv2D(filters=16, kernel_size=(3, 3), input_shape=inp_shape))
model.add(Conv2D(filters=32, kernel_size=(3, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(rate=dropout_prob))
model.add(Flatten())
model.add(Dense(128, activation=activation_function))
model.add(Dropout(rate=dropout_prob))
model.add(Dense(64, activation=activation_function))
model.add(Dropout(rate=dropout_prob))
model.add(Dense(32, activation=activation_function))
model.add(Dense(num_classes, activation='softmax'))
model.summary()
model.compile(loss=loss_function, optimizer=opt, metrics=['accuracy'])
history = model.fit(x_train, y_train_cat, batch_size=batch_size, epochs=epoch_count,
verbose=verbose_level,
validation_data=(x_test, y_test_cat))
【问题讨论】:
-
opt是什么? -
我是古玩,我的回答解决了你的问题吗?
标签: neural-network keras conv-neural-network