【问题标题】:What's the best way to evaluate test error during training?在训练期间评估测试错误的最佳方法是什么?
【发布时间】:2018-04-19 10:38:40
【问题描述】:

我有一个使用 TensorFlow 训练的神经网络。实际上,在每次迭代中,我都可以计算传递给优化器的训练成本。我的实现的伪代码是:

def defineNetworkStructure(): # layers 
    ...

def feedForward():
    ...

def defineCost():
    ...

def defineOptimizer():
    opt = ...

def train(train_X, train_Z, ...):
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for i in range(N):
            _, ith_cost = sess.run([opt, cost], feed_dict={X:train_X, Y:train_Y})

            print("Cost at {} is {}".format(i, ith_cost))

现在,在循环中,我想插入如下内容:

ith_cost = sess.run([opt, cost], feed_dict={X:test_X, Y:test_Y})

注意: test_X 和 test_Y 而不是 train_X 和 train_Y。

但是,如果我这样做,我会修改 tensorflow 变量 cost 的值,因此(但我不确定)我会影响优化过程。

在 tensorflow 中实现此任务的最佳方法是什么?

【问题讨论】:

  • 只要您不运行任何优化操作(例如opt)并且您的cost 操作不包含任何内容,插入验证行应该没有问题。跨度>

标签: python-3.x tensorflow


【解决方案1】:

您在这里错过的是,您不应该在 test_X 和 test_Y 上运行 opt。

只需执行sess.run(cost, feed_dict={X:test_X, Y:test_Y}) 将输出您的测试损失,并且不会影响训练或优化过程。

【讨论】:

  • 那个选项是一个错字。我复制/粘贴了上面的行,我忘了删除 opt.我会试试你的建议
猜你喜欢
  • 2018-04-27
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多