当前位置: 首页 > 面试题库 >

在TensorFlow培训期间打印损失

罗智志
2023-03-14
问题内容

我正在看TensorFlow“
MNIST对于ML初学者”教程,我想在每个训练步骤之后打印出训练损失。

我的训练循环目前看起来像这样:

for i in range(100):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

现在,train_step定义为:

train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

cross_entropy我要打印的损失在哪里:

cross_entropy = -tf.reduce_sum(y_ * tf.log(y))

一种打印方式是cross_entropy在训练循环中显式计算:

for i in range(100):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    print 'loss = ' + str(cross_entropy)
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

我现在有两个问题:

  1. 鉴于cross_entropy已经在期间进行了计算sess.run(train_step, ...),因此将其计算两次效率低下,这需要所有训练数据的前向通过次数的两倍。有没有一种方法可以访问在cross_entropy计算期间的value sess.run(train_step, ...)

  2. 我如何打印tf.Variable?使用str(cross_entropy)给我一个错误…

谢谢!


问题答案:

您可以cross_entropy通过将的值添加到的参数列表中来获取sess.run(...)。例如,您的for-loop可以重写如下:

for i in range(100):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    _, loss_val = sess.run([train_step, cross_entropy],
                           feed_dict={x: batch_xs, y_: batch_ys})
    print 'loss = ' + loss_val

可以使用相同的方法来打印变量的当前值。假设,除了的值cross_entropy,您还想打印被tf.Variable调用的值W,您可以执行以下操作:

for i in range(100):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    cross_entropy = -tf.reduce_sum(y_ * tf.log(y))
    _, loss_val, W_val = sess.run([train_step, cross_entropy, W],
                                  feed_dict={x: batch_xs, y_: batch_ys})
    print 'loss = %s' % loss_val
    print 'W = %s' % W_val


 类似资料:
  • 对于初始模型,我主要遵循这一点。比方说,我想在每个训练循环上打印批次中使用的图像数据,即我想在“微调不同标签集上的模型”中打印每个训练迭代的“images”变量值代码,既然会话实际上是在slim中创建的,我该如何做呢。训练训练功能,因此我无法进行sess。在没有SES的情况下运行([图像])?

  • 数据丢失:不是sstable(错误的幻数):可能您的文件格式不同,您需要使用不同的还原运算符? 我看过这篇文章,但是tf。火车导出元图不起任何作用。另外,如果我尝试在新的终端选项卡中生成输出,如下所示: 我得到这个错误,基本上说我不能生成输出,因为训练数据还没有保存。如何保存并完成培训?

  • Sagemaker是培训您的模型的绝佳工具,我们通过使用AWS spot实例节省了一些资金。然而,培训工作有时会在中间停止。我们正在使用一些机制在重新启动后从最新的检查点继续。另请参见文档。 不过,您如何有效地测试这种机制?你能自己触发吗?否则,您必须等待spot实例实际重新启动。 另外,您是否需要为此使用链接的参数或?例如,估计器文档似乎为检查点建议了一些。

  • QA职责 QA起到监督项目执行进度、监控项目质量的重要责任; QA辅助项目经理,推进项目开发; QA向公司的QA部门负责人汇报; QA需了解项目的所有需求; QA人员,同时承担项目上的开发工作,开发与项目保障并进。 对于目前的状况,QA的规划有如下特点: QA不作为公司的一个单独部门,而是由分散到每个项目的指定开发人员临时担任; QA是培养项目经理的重要岗位 QA工作内容 每天的进度反馈(从用户视

  • 我是pytorch的新手,我正在尝试运行我找到的github模型并对其进行测试。因此,作者提供了模型和损失函数。 像这样: 数据加载 假设我想训练这个模型15个时代。这就是我到目前为止所做的:我正在尝试设置优化器和训练,但我不确定如何将自定义丢失和数据加载绑定到模型,并正确设置15个历元训练。 有什么建议吗?

  • 浏览训练视图 在训练期间您可利用向上/向下按钮浏览训练视图。请注意,可显示的训练视图与信息取决于您所选择的运动和您对所选运动内容的编辑。 在手表 Polar Flow 应用和网络服务中,您可添加运动内容以及针对每项运动内容进行具体设置。您可以为各项运动创建自定义训练视图,并选择训练期间想要看到的数据。有关更多信息,请参见 Flow 中的运动内容。 例如,训练视图可以显示以下信息: Your hea