tenorflow tf.metrics.mean_absolute_error возвращает другое значение? - PullRequest
0 голосов
/ 17 мая 2019

Я проверяю tf.metrics.mean_absolute_error функцию.И я знаю, что это возвращает два результата за всю сессию.Однако я обнаружил, что он не возвращает значения для одного и того же ввода, когда я запускаю программы несколько раз.Мой пример кода выглядит следующим образом:

import tensorflow as tf
import numpy as np

pred_0 = np.zeros(5) + 1
pred_1 = np.zeros(5) + 2
pred_2 = np.zeros(5) + 3
pred_3 = np.zeros(5) + 4
pred_4 = np.zeros(5) + 5

label = np.asarray([0, 0, 0, 0, 0])
predictions = np.stack((pred_0, pred_1, pred_2, pred_3, pred_4))

print('____________predictions______________')
print(predictions)

print('____________labels______________')
print(label)

pred_placeholder = tf.placeholder(tf.float16, shape=label.shape)
label_placeholder = tf.placeholder(tf.float16, label.shape)
mae = tf.metrics.mean_absolute_error(label_placeholder, pred_placeholder)

init = tf.group(tf.global_variables_initializer(), 
tf.local_variables_initializer())

with tf.Session() as sess:
    sess.run(init)
    for i in range(predictions.shape[0]):
        mae_value, update_op = sess.run(mae, feed_dict={label_placeholder: label, pred_placeholder: predictions[i]})
        print(f'{mae_value} {update_op} {np.mean(predictions[i] - label)}')

Однако, когда я запускаю этот фрагмент кода несколько раз, он выводит разные значения!Иногда вывод кода:

0.0 1.0 1.0
1.0 1.5 2.0
1.5 2.0 3.0
2.0 2.5 4.0
3.0 3.0 5.0

, иногда:

1.0 1.0 1.0
3.0 1.5 2.0
3.0 2.0 3.0
3.3333332538604736 2.5 4.0
3.75 3.0 5.0

или может быть таким:

0.0 1.0 1.0
3.0 1.5 2.0
3.0 2.0 3.0
3.3333332538604736 2.5 4.0
3.75 3.0 5.0

Я чувствую себя таким смущеннымоб этом выводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...