#python #tensorflow #metrics
#python #тензорный поток #показатели
Вопрос:
Я пытаюсь запустить очень простой пример кода, который я нашел в Интернете:
with graph.as_default():
with sess.as_default():
labels = tf.constant([[[1.0, 0.0], [0.0, 1.0], [0.0, 1.0]]])
predictions = tf.constant([[[1.0, 0.0], [0.0, 1.0], [0.0, 1.0]]])
t = 0.5
y_pred_ = tf.to_int32(predictions > t)
score, up_opt = tf.metrics.mean_iou(labels, y_pred_, 3)
with tf.control_dependencies([up_opt]):
score_2 = 1.0 * score
sess.run([tf.local_variables_initializer()])
result = sess.run([score_2])
Предполагается, что это даст мне среднее значение iou этого фиктивного примера. Однако, если я запускаю это несколько раз, я получаю разные результаты. Я заметил, что запуск up_opt
вручную исправляет это:
with graph.as_default():
with sess.as_default():
labels = tf.constant([[[1.0, 0.0], [0.0, 1.0], [0.0, 1.0]]])
predictions = tf.constant([[[1.0, 0.0], [0.0, 1.0], [0.0, 1.0]]])
t = 0.5
y_pred_ = tf.to_int32(predictions > t)
score, up_opt = tf.metrics.mean_iou(labels, y_pred_, 3)
sess.run([tf.local_variables_initializer()])
sess.run([up_opt])
result = sess.run([score])
Однако мне интересно, почему control_dependencies не работает. Разве это не должно автоматически запускать операторы?
Комментарии:
1. Во втором фрагменте кода
score_2
не определено. Вы хотели добавитьscore_2 = 1.0 * score
туда безwith
инструкции? Используете ли вы TF 1.15?2. Это была опечатка. Я намеревался
sess.run([score])
. Я обновил свой вопрос. Я использую tensorflow 1.14