【问题标题】:Simultaneous training and testing in Tensorflow在 Tensorflow 中同时进行训练和测试
【发布时间】:2018-07-11 13:44:24
【问题描述】:

我正在尝试在同一脚本、同一图表、同一会话中对 Tensorflow 中的神经网络进行训练和测试。我读到这是可能的,但是当我查看训练和测试操作的准确性/损失结果时,似乎这两个操作都只是训练过程的继续。例如。火车.acc。 epoch 将在 0.84 结束,然后测试将从 0.84 开始,在 0.87 结束,然后训练将以 acc 继续。 0.87...

我的代码是这样构造的:

1) 定义 acc 和 loss 的计算

calc_loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits)
    acc, acc_op = tf.metrics.accuracy(labels=labels, predictions=predictions)
loss = tf.metrics.mean(calc_loss)

2) 在同一个 tf.session 中运行上述内容,例如对于ACC:

acc_value, acc_op_value = sess.run([acc, acc_op], feed_dict=feed_dict_train)
test_acc_value, test_acc_op_value = sess.run([acc, acc_op], feed_dict=feed_dict_test) 

这两个字典包含不同的数据。 我的问题是,我是否需要为训练和测试定义不同的操作 - 这是训练和测试混淆的地方吗?或者不可能一次测试和训练?什么是一个干净而简单的方法来解决这个问题?说明这一点的代码示例的链接也会有所帮助(因为我无法找到任何直接回答我的问题的内容)。

【问题讨论】:

    标签: python tensorflow neural-network training-data


    【解决方案1】:

    tf.metrics 中的指标是有状态的;它们创建变量来累积部分结果,因此您不应该期望它们自动重置。而是使用 tf.contrib.metricstf.keras.metrics 中的指标和 session.run 操作以相应地重置它们。

    【讨论】:

    • 感谢您的回答,这是缺少的信息。
    猜你喜欢
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 2017-12-30
    • 2018-01-15
    相关资源
    最近更新 更多