我的问题是关于TF2.0
的。没有tf.losses.absolute_difference()
函数,也没有tf.losses.Reduction.MEAN
属性。
我应该用什么来代替呢?是否有TF2
中已删除的TF
函数的列表以及它们的替代函数。
这是不能与TF2
一起运行的TF1.x
代码:
result = tf.losses.absolute_difference(a,b,reduction=tf.losses.Reduction.MEAN)
发布于 2019-05-12 21:43:56
您仍然可以通过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
https://stackoverflow.com/questions/56099314
复制相似问题