为什么 val_loss 和 val_acc 不显示?

Arl*_*lex 7 python machine-learning keras

训练开始时,运行窗口中仅显示loss和acc,缺少val_loss和val_acc。仅在最后才会显示这些值。

model.add(Flatten())
model.add(Dense(512, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(10, activation="softmax"))

model.compile(
    loss='categorical_crossentropy',
    optimizer="adam",
    metrics=['accuracy']
)

model.fit(
    x_train,
    y_train,
    batch_size=32, 
    epochs=1, 
    validation_data=(x_test, y_test),
    shuffle=True
)
Run Code Online (Sandbox Code Playgroud)

训练是这样开始的:

Train on 50000 samples, validate on 10000 samples
Epoch 1/1

   32/50000 [..............................] - ETA: 34:53 - loss: 2.3528 - acc: 0.0938
   64/50000 [..............................] - ETA: 18:56 - loss: 2.3131 - acc: 0.0938
   96/50000 [..............................] - ETA: 13:45 - loss: 2.3398 - acc: 0.1146
Run Code Online (Sandbox Code Playgroud)

这就是它完成的时候

49984/50000 [============================>.] - ETA: 0s - loss: 1.5317 - acc: 0.4377
50000/50000 [==============================] - 231s 5ms/step - loss: 1.5317 - acc: 0.4378 - val_loss: 1.1503 - val_acc: 0.5951
Run Code Online (Sandbox Code Playgroud)

我想查看每行中的 val_acc 和 val_loss

Eri*_*nie 3

验证损失和准确性是在 epoch 结束时计算的,而不是在批次结束时计算的。如果您想在每个批次后计算这些值,则必须使用方法实现自己的回调on_batch_end()并调用self.model.evaluate()验证集。请参阅https://keras.io/callbacks/

但是在每个时期之后计算验证损失和准确性会大大减慢您的训练速度,并且不会对网络性能的评估带来太大影响。