测试精度评估回调
Test accuracy evaluation Callback
我想计算神经网络训练期间每个时期之后的测试准确度。简单的解决方案是:
for i in range(NUM_EPOCHS):
model.fit(train_dataset,epochs=1)
accuracy = model.evaluate(test_dataset)
test_accuracy_list.append(accuracy)
是否有使用回调的更模块化的解决方案?
您可以使用自定义训练循环,例如 this
您提到的方法不正确,您指定的方法不会做要求的事情。相反,它会多次调用拟合函数。
keras fit 函数 returns 你只有步骤 loss/acc 而不是纪元 loss/acc
你需要的是on_epoch_end
class EvaluateEpochEnd(tf.keras.callbacks.Callback):
def __init__(self, test_data):
self.test_data = test_data
def on_epoch_end(self, epoch, logs={}):
x, y = self.test_data
scores = self.model.evaluate(x, y, verbose=False)
print('\nTesting loss: {}, accuracy: {}\n'.format(scores[0], scores[1]))
用法:
model.fit(x_train, y_train, epochs=5, callbacks=[EvaluateEpochEnd((x_test, y_test))])
将给予:
Epoch 1/5
1875/1875 [==============================] - 6s 3ms/step - loss: 0.4784 - accuracy: 0.8619
Testing loss: 0.14208272099494934, accuracy: 0.9574000239372253
我想计算神经网络训练期间每个时期之后的测试准确度。简单的解决方案是:
for i in range(NUM_EPOCHS):
model.fit(train_dataset,epochs=1)
accuracy = model.evaluate(test_dataset)
test_accuracy_list.append(accuracy)
是否有使用回调的更模块化的解决方案?
您可以使用自定义训练循环,例如 this
您提到的方法不正确,您指定的方法不会做要求的事情。相反,它会多次调用拟合函数。
keras fit 函数 returns 你只有步骤 loss/acc 而不是纪元 loss/acc
你需要的是on_epoch_end
class EvaluateEpochEnd(tf.keras.callbacks.Callback):
def __init__(self, test_data):
self.test_data = test_data
def on_epoch_end(self, epoch, logs={}):
x, y = self.test_data
scores = self.model.evaluate(x, y, verbose=False)
print('\nTesting loss: {}, accuracy: {}\n'.format(scores[0], scores[1]))
用法:
model.fit(x_train, y_train, epochs=5, callbacks=[EvaluateEpochEnd((x_test, y_test))])
将给予:
Epoch 1/5
1875/1875 [==============================] - 6s 3ms/step - loss: 0.4784 - accuracy: 0.8619
Testing loss: 0.14208272099494934, accuracy: 0.9574000239372253