我正在尝试创建一个自定义回调,当我调用model.fit(…)时,它将在培训和验证部分的开始和结束时激活
训练部分(on_train_begin/on_train_end)工作正常,但测试部分(on_test_begin/on_test_end)不被调用。在PyCharm,它甚至不显示那些已经存在的方法。在火车上,我看到左边的超驰标志,但在测试中没有。
如何创建将在验证期间激活的自定义回调?我在TensorFlow 1.13上(不确定这是否会改变什么)。
我想这样做是为了能够记录培训的执行时间和验证的执行时间。
我遵循了TensorFlow官方网站的指示:
https://www.tensorflow.org/beta/guide/keras/custom_callback
我还在官网上找到了“测试开始”和“测试结束”的方法:
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/TensorBoard
class TimeHistory(tf.keras.callbacks.Callback):
def on_test_begin(slef,logs=None):
print('testing begins')
def on_test_end(selfs,logs=None):
print('testing ends')
def on_train_begin(self, logs=None):
print("training begins")
def on_train_end(self, logs=None):
print('training ends')
def creationModeleMLP(nbHiddenLayers,nbPerceptrons,nbEpochs,learningRate,myBatchSize,currentFold):
model = tf.keras.models.Sequential()
#ajoute le input layer
model.add(tf.keras.layers.Flatten(input_shape=(76,)))
#ajoute les hidden layers
for i in range(nbHiddenLayers):
model.add(tf.keras.layers.Dense(nbPerceptrons, activation=tf.nn.relu))
#ajoute le output layer
model.add(tf.keras.layers.Dense(2, activation=tf.nn.softmax))
model.compile(optimizer=tf.keras.optimizers.Adam(lr=learningRate),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#entraine le modele
timeHistory = TimeHistory()
histoire = model.fit(vectPrimTrain[currentFold], typeTrain[currentFold], batch_size=myBatchSize, epochs=nbEpochs,
callbacks=[tensorboard,timeHistory], validation_data=(vectPrimTest[currentFold],typeTest[currentFold]))
我希望在验证开始时调用“测试”上的方法和“测试”上的方法。
谢谢你
最佳答案
在tensorflow 1.14+中加入了on_test_*
和on_predict_*
两种方法。确保tensorflow 1.14或tensorflow 2能够使用这些。