python - TensorFlow Keras 自定义回调 on_test_begin 不会覆盖自身
问题描述
我正在尝试创建一个自定义回调,该回调在我调用 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
我还在官网上找到了on_test_begin和on_test_end方法:
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]))
我希望在验证开始时调用方法 on_test_begin 和方法 on_test_end。
谢谢
解决方案
方法on_test_*
和on_predict_*
已添加到 tensorflow 1.14+。确保您拥有 tensorflow 1.14 或 tensorflow 2 才能使用它们。
推荐阅读
- mysql - 如何使用文件将数据从 mysql 迁移到 clickhouse?
- vue.js - 使用 $emit 调用函数
- python - 在计算最小二乘为什么要添加向量?
- docker - 使用 --bridge=none 运行第二个 docker 守护程序会删除 docker0
- python - 组合具有对应值的列表
- javascript - 呈现给 EJS 时的数组变量丢失结构/括号
- scala - Scala 强调 lambda 中的用法
- python-3.x - 在 python 中运行并行的 Selenium 控制窗口
- java - 手机号码验证问题的正则表达式模式
- visual-studio-code - 无法在 angular-cli.json 文件上获得智能感知