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

有人可以帮助我了解以下代码中的每一行在做什么吗?我是 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?

请帮助我理解。


狐的传说
浏览 269回答 2
2回答

有只小跳蛙

我假设您正在使用hunkim的教程。mnist.train.next_batch(batch_size)基本上返回下一批要训练的东西。可能是MNIST CNN / DNN,这意味着您需要输入和标签才能输入网络,即手写数字(输入)的图像以及正确的预测(标签)应该是什么。它们分别是batch_xs和batch_ys。m1.train返回两个对象,第一个是步骤的成本。_是通常用于不使用的变量的名称。avg_cost仅在整个 epoch 运行后才打印。这表明这avg_cost是该时期的平均成本。现在,c是一步的平均成本。每个纪元的总步数为total_batch。然后要计算一个epoch的平均成本,您应该将c每一步返回的所有s相加,然后除以total_batch。这就是本质上正在做的事情;avg_cost += c / total_batch。

侃侃无极

对于您的第一个问题,您可能应该包含更多代码。在没有看到其余代码的情况下,我可以猜到batch_xs, batch_ys是data, labels。_通常表示不需要的变量,这意味着该函数返回 2 个对象,但您只想要第一个,因此您用有意义的名称 ( c)表示所需的一个,而另一个则用不那么 ( _) 表示。c / total_batch正是您想要的。这是成比例的成本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python