为了账号安全,请及时绑定邮箱和手机立即绑定

了解如何逐行训练我的 tensorflow CNN

了解如何逐行训练我的 tensorflow CNN

狐的传说 2021-05-31 06:01:15
有人可以帮助我了解以下代码中的每一行在做什么吗?我是 tensorflow 的新手并且非常困惑。for epoch in range(training_epochs):    avg_cost = 0    total_batch = int(mnist.train.num_examples / batch_size)    for i in range(total_batch):        batch_xs, batch_ys = mnist.train.next_batch(batch_size)        c, _ = m1.train(batch_xs, batch_ys)        avg_cost += c / total_batch    print('Epoch:', '%04d' % (epoch + 1), 'cost =', '{:.9f}'.format(avg_cost))我已经定义了时代的数量。for循环内的代码通过training_epochs指定的迭代次数训练模型。我不明白什么是什么batch_xs以及batch_ys为什么以及为什么mnist.train.next_batch(batch_size)返回的结果分别定义为batch_xs和的两个值batch_ys。c, _ = m1.train(batch_xs, batch_ys)。c是多少,但底线是多少?为什么每次迭代都会修改成本c / total_batch而不是c?请帮助我理解。
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我假设您正在使用hunkim的教程。

  1. mnist.train.next_batch(batch_size)基本上返回下一批要训练的东西。可能是MNIST CNN / DNN,这意味着您需要输入和标签才能输入网络,即手写数字(输入)的图像以及正确的预测(标签)应该是什么。它们分别是batch_xsbatch_ys

  2. m1.train返回两个对象,第一个是步骤的成本。_是通常用于不使用的变量的名称。

  3. avg_cost仅在整个 epoch 运行后才打印。这表明这avg_cost是该时期的平均成本。现在,c一步的平均成本。每个纪元的总步数为total_batch。然后要计算一个epoch的平均成本,您应该将c每一步返回的所有s相加,然后除以total_batch。这就是本质上正在做的事情;avg_cost += c / total_batch


查看完整回答
反对 回复 2021-06-01
?
侃侃无极

TA贡献2051条经验 获得超10个赞

  1. 对于您的第一个问题,您可能应该包含更多代码。在没有看到其余代码的情况下,我可以猜到batch_xs, batch_ysdata, labels

  2. _通常表示不需要的变量,这意味着该函数返回 2 个对象,但您只想要第一个,因此您用有意义的名称 ( c)表示所需的一个,而另一个则用不那么 ( _) 表示。

  3. c / total_batch正是您想要的。这是成比例的成本。



查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号