Keras:为什么model.fit()没有返回与model.evaluate()相同的值?

时间:2017-08-09 15:25:12

标签: python machine-learning neural-network keras

在另一个问题中,提问者有一个批量规范化层,但在这种情况下没有一个存在。

model.fit(training_data, training_targets, batch_size=16, epochs=1)
  

大纪元1/1 33350/33350 [==============================] - 18s - 损失:   0.0926 - acc:0.9703 Out [708]:

model.evaluate(training_data, training_targets)
  

33248/33350 [============================&gt ;.] - ETA:0s Out [709]:   > [0.027722493904928553,0.99157421289355319]

model = Sequential([
    LocallyConnected2D(10, kernel_size=(20, 20), strides=4, padding='valid', activation='relu', input_shape=(50, 110, 1))
    , Dropout(0.3), Flatten(), Dense(1, activation='sigmoid')
])

model.compile(loss='binary_crossentropy', optimizer='adam', metrics='accuracy'])

1 个答案:

答案 0 :(得分:1)

您在进度条中看到的损失是每批次损失,未在完整培训集中评估。当您使用model.evaluate时,您正在评估整个训练集,因此预期损失不一样。

正如评论中提到的那样,在评估期间,Dropout在测试时被禁用,因此它也会影响结果。