Я пытаюсь оценить точность моей модели. Я вычисляю среднее значение среднего парного евклидова подобия между логитами из каждого класса. Я использую TPUEstimator для обучения сети.
У меня есть тестовый код в Google Colab, где он работает нормально, но на реальной машине с виртуальной машиной это не так.
Они оба используют Tensorflow 1.13.1.
Colab работает под управлением Python 2.7.15rc1, где на виртуальной машине установлено 2.7.13.
labels_count = tf.size(tf.unique(labels)[0])
hot = tf.one_hot(labels, labels_count, dtype=tf.int32)
accu = []
for i in range(0, hot.shape[1]):
a = tf.dynamic_partition(logits, hot[:, i],2)[1]
out = pairwise_distance(a)
accu.append(out)
accus = tf.convert_to_tensor(accu)
mean = tf.reduce_mean(tf.boolean_mask(accus, tf.logical_not(tf.is_nan(accus))))
Код ошибки на ВМ с TypeError: __int__ should return int object
, но прекрасно работает в Colab, есть идеи, в чем может быть проблема?
РЕДАКТИРОВАТЬ: нормально воспроизвели проблему в Colab. В Colab я использовал tf.constant, который не используется в реальном коде. Так как же мне заставить диапазон работать в этом случае?