【发布时间】:2019-03-11 21:31:50
【问题描述】:
我编写 Keras 的代码来训练 GoogleNet。然而,从 fit() 得到的准确率是 100%,但使用相同的训练数据集用于评估(),准确率仍然只有 25%,这有很大的差异!!!此外,与 fit() 不同的是,evaluate() 的准确度不会因训练次数而提高,这意味着它几乎保持在 25%。
有人知道这种情况有什么问题吗?
# Training Dataset and labels r given. Here load GoogleNet model
from keras.models import load_model
model = load_model('FT_InceptionV3.h5')
# Training Phase
model.fit(x=X_train,
y=y_train,
batch_size=5,
epochs=20,
validation_split=0,
#callbacks=[tensorboard]
)
#Testing Phase
train_loss , train_acc=model.evaluate(X_train, y_train, verbose=1)
print("Train loss=",train_loss,"Train accuracy",train_acc)
【问题讨论】:
-
@Justice_Lords 看看模型是否过度拟合,他/她应该在测试或开发集中进行评估,事实并非如此。他/她正在检查培训阶段。我认为这行不通,但您可以尝试预测训练集并使用 scikit-learn 中的
accurarcy_score,例如,看看评估函数是否有错误或其他问题。 -
这可能会有所帮助(例如设置适当的种子等):machinelearningmastery.com/…
-
ConvNets 拒绝学习在大多数情况下是由于输入图像的缩放/预处理不当或优化器的 learning_rate 错误(例如 LR 太大或太小)。希望对您有所帮助。
-
@Justice_Lords 虽然它可能有过拟合,但如果使用相同的数据集 r,fit() 和 evaluate() 的准确度会不会相同?