以下是 Tensorflow NN 训练部分的 2 个代码模式。
我发现使用模型 1 是合乎逻辑的。但我经常在多个地方看到模型 2。我觉得 Model 2 是错误的。对于相同数据的每次迭代,模型不会在会话中运行两次图形吗?是否有我遗漏的东西,人们出于任何其他原因而这样做?
模型 1
for epoch in range(epochs):
for iteration in range(num_tr_iter):
_, loss, accuracy = sess.run([optimizer, loss, accuracy], feed_dict)
型号 2
for epoch in range(epochs):
for iteration in range(num_tr_iter):
sess.run(optimizer, feed_dict)
loss, accuracy = sess.run([loss, accuracy],feed_dict)
编辑:为了更清楚,正在扩大问题
如果下面的 sess.run() 执行优化器节点,它将执行其所有依赖节点。它还将运行底层的 convnet 和损失函数。
sess.run(optimizer, feed_dict)
接下来,如果下面的 sess.run() 执行损失节点,为什么它不使用当前权重执行 convnet。我不是在推断它会再次运行优化。即使达到当前的损失,tensorflow 不会执行 convnet 并计算损失吗?
loss, accuracy = sess.run([loss, accuracy],feed_dict)
繁花如伊
相关分类