0

我不仅想观察应该在训练期间优化的连续错误,还想观察训练期间另一个不可区分的指标(如 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数组

4

1 回答 1

0

没有理由不能在图表中创建自己的挂钩来获取准确度指标。即使您使用的是 tf-slim,您仍然可以使用摘要来获取您想要的信息。要生成 top1/5 错误,您需要进行非训练 run() 调用并获取错误摘要,然后将其写入摘要编写器。

或者,如果你只是想要一些你可以在 python 中 print() 的东西,你可以在验证集上获取你的错误:

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() 调用中获取它!

于 2017-04-04T12:52:05.210 回答