Можно ли показать ошибку классификации вместе с постоянной ошибкой во время тонкого поезда?

я хочу смотреть не только непрерывную ошибку, которая должна быть оптимизирована во время обучения, но и другие недифференцируемые показатели (например, ошибку классификации 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 и передать в массив slim.learning.train [train_op, Another_loss]


person svetlov.vsevolod    schedule 04.04.2017    source источник


Ответы (1)


Нет никаких причин, по которым вы не можете создавать свои собственные крючки на своем графике, чтобы получить показатель точности. Даже если вы используете 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()!

person JCooke    schedule 04.04.2017