我不仅想要观察在训练期间应该优化的连续误差,还要观察训练期间另一个不可区分的指标(如top1或top5分类错误)。有可能吗?
示例:
outputs = MyModel(inputs)
continuous_loss = some_loss(outputs, labels)
# it could return tensor with dimension different than continuous loss,
# which return only one scalar for batch
another_loss = some_another_loss(outputs, labels, ...)
optimizer = tf.RMSPropOptimizer(lr, momentum)
train_op = slim.learning.create_train_op(continuous_loss, optimizer, ...)
# this call is blocking and i can't run another op with session.run
slim.learning.train(train_op, logdir, ...)
我需要的只是重新定义 train_step_fn 并传递给 [train_op,another_loss] 的 slim.learning.train 数组
答案 0 :(得分:0)
没有理由不能在图表中创建自己的钩子以获得精度指标。即使您使用的是tf-slim,您仍然可以使用摘要来获取所需的信息。要生成top1 / 5错误,您需要进行非训练run()调用并获取错误摘要,然后将其写入摘要编写器。
或者,如果您只想要在python中打印(),可以在验证集上获取错误:
feeds={x_validation_data:x,y_validation_data:y}
fetches=[error,cross_entropy]
res=sess.run(fetches=fetches, feed_dict=feeds)
error=res[0]
没有更多信息,我可以从您的问题中理解。如果您可以通过传递验证集来计算Tensorflow中的错误,那么您也可以在sess.run()调用中获取它!