有人能帮我理解下面代码中的每一行都在做什么吗? 我对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循环中的代码根据训练时间指定的迭代次数来训练模型。你知道吗
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
修改成本?你知道吗请帮助我理解。你知道吗
batch_xs, batch_ys
是data, labels
。你知道吗_
通常意味着一个不需要的变量,这意味着函数返回2个对象,但是您只需要第一个对象,因此您用一个有意义的名称(c
)来表示所需的对象,而用一个不太有意义的名称(_
)来表示另一个对象。你知道吗c / total_batch
正是你想要的。这是成比例的成本。你知道吗我假设你用的是亨金的教程。你知道吗
mnist.train.next_batch(batch_size)
基本上返回要训练的下一批。这可能是MNIST CNN/DNN,这意味着您需要输入和标签来输入网络,即手写数字的图像(输入)和正确的预测(标签)应该是什么。它们分别是batch_xs
和batch_ys
。m1.train
返回两个对象,第一个是步骤的开销。_
是一个变量名,通常用于表示您不会使用的内容。avg_cost
仅在运行整个epoch之后才打印。这表明avg_cost
是这个时代的平均成本。现在,c
是一步的平均成本。每个历元的总步数是total_batch
。然后要计算一个历元的平均成本,应该将每个步骤返回的所有c
相加,然后除以total_batch
。基本上就是这样做的;avg_cost += c / total_batch
。相关问题 更多 >
编程相关推荐