Я определил очень простую пользовательскую метрику в tf.keras для отслеживания количества пикселей, предсказанных как '1' для проблемы сегментации. Поскольку выходные данные с последнего слоя имеют сигмовидную активацию, я округляю y_pred и затем суммирую. Я ожидаю увидеть целое целое значение (> = 0) (из-за округления), но вывод показывает числа с плавающей запятой, такие как 0,28. Как это возможно? Как я могу отладить это, чтобы выяснить, где проблема?
Я попытался переключиться с tf.keras.backend.sum & tf.keras.backend.round на tf.reduce_sum & tf. раунд , но это не решило проблему
def num_ones(y_true, y_pred):
return tf.keras.backend.sum(tf.keras.backend.flatten(tf.keras.backend.round(y_pred)))
model.compile(optimizer = tf.train.AdamOptimizer(learning_rate = 1e-4), loss = 'binary_crossentropy', metrics = ['accuracy', num_ones])
output-
INFO:tensorflow:Saving dict for global step 3408: accuracy = 0.9551756, global_step = 3408, loss = 0.7224839, num_ones = 0.28