Python 如何撤消TensorFlow会话中的最后一个训练步骤?
是否有可能撤消最后一个培训步骤?例如,当损失值为“NaN”时Python 如何撤消TensorFlow会话中的最后一个训练步骤?,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,是否有可能撤消最后一个培训步骤?例如,当损失值为“NaN”时 ... for step in range(num_epoch): _, loss_value = sess.run([train_op, loss]) if np.isnan(loss_value): # something like: sess.undo_last() break ... 如果有这样的方法。它也适用于多GPU培训吗?没有这种东西,但是您可以这样做。 在您的模型中添加: loss
...
for step in range(num_epoch):
_, loss_value = sess.run([train_op, loss])
if np.isnan(loss_value):
# something like: sess.undo_last()
break
...
如果有这样的方法。它也适用于多GPU培训吗?没有这种东西,但是您可以这样做。 在您的模型中添加:
loss = tf.check_numerics(loss)
如果您的损失变为NaN或Inf,这将抛出一个InvalidArgument
异常。因为这是在您计算任何反向传播之前计算的,所以不会修改权重。
您的示例代码如下所示:
for step in range(num_epoch):
try:
sess.run([train_op])
except InvalidArgument:
break
但这对你没有帮助。通常,NaN或Inf丢失意味着模型已经处于不良状态。尝试不同的激活功能或更简单的型号,这样就不会出现问题
或者,您可以设置检查点(每X步保存一次模型),并查看在出现错误之前选择一个检查点。谢谢您的回答。我使用了Cifar10 CNN多GPU Tensorflow教程:。皮耶。如果将历元设置得太高,则损失值将变为NaN。正在寻找解决方案,但只保存了一个模型。