Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何撤消TensorFlow会话中的最后一个训练步骤?_Python_Python 3.x_Tensorflow - Fatal编程技术网

Python 如何撤消TensorFlow会话中的最后一个训练步骤?

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

是否有可能撤消最后一个培训步骤?例如,当损失值为“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 = 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。正在寻找解决方案,但只保存了一个模型。