我的问题是关于TF2.0
。没有tf.losses.absolute_difference()
函数,也没有tf.losses.Reduction.MEAN
属性。
我应该改用什么?
在TF
中是否有已删除的TF2
函数的列表,以及它们的替换列表。
这是TF1.x
代码,无法与TF2
一起运行:
result = tf.losses.absolute_difference(a,b,reduction=tf.losses.Reduction.MEAN)
答案 0 :(得分:0)
您仍然可以通过tf.compat.v1
访问此功能:
import tensorflow as tf
labels = tf.constant([[0, 1], [1, 0], [0, 1]])
predictions = tf.constant([[0, 1], [0, 1], [1, 0]])
res = tf.compat.v1.losses.absolute_difference(labels,
predictions,
reduction=tf.compat.v1.losses.Reduction.MEAN)
print(res.numpy()) # 0.6666667
或者您可以自己实施:
import tensorflow as tf
from tensorflow.python.keras.utils import losses_utils
def absolute_difference(labels, predictions, weights=1.0, reduction='mean'):
if reduction == 'mean':
reduction_fn = tf.reduce_mean
elif reduction == 'sum':
reduction_fn = tf.reduce_sum
else:
# You could add more reductions
pass
labels = tf.cast(labels, tf.float32)
predictions = tf.cast(predictions, tf.float32)
losses = tf.abs(tf.subtract(predictions, labels))
weights = tf.cast(tf.convert_to_tensor(weights), tf.float32)
res = losses_utils.compute_weighted_loss(losses,
weights,
reduction=tf.keras.losses.Reduction.NONE)
return reduction_fn(res, axis=None)
res = absolute_difference(labels, predictions)
print(res.numpy()) # 0.6666667