如何在Tensorflow中设置损失操作的名称?

bue*_*hel 2 python tensorflow

在Tensorflow中,我可以为操作和张量分配名称以在以后检索它们。例如,在一个功能中我可以做

input_layer=tf.placeholder(tf.float32, shape= [None,300], name='input_layer')
Run Code Online (Sandbox Code Playgroud)

然后在另一个功能中,我可以

input_layer=get_tensor_by_name('input_layer:0')
Run Code Online (Sandbox Code Playgroud)

我开始相信这对于使我的tf代码尽可能模块化非常有用。

我希望能够对丢失的邮件执行相同的操作,但是如何为该操作分配自定义名称?问题是内置损失函数(例如tf.losses.mean_squared_error)没有名称参数(与tf.placeholder,tf.variable等相反)。

我现在所说的损失是

tf.get_collection(tf.GraphKeys.LOSSES)[-1]
Run Code Online (Sandbox Code Playgroud)

(检索已添加到图形中的最后一个损失操作)。我是否缺少明显的东西?

Alb*_*295 5

我知道这并不完全是答案,但是它可以解决您的问题。

鉴于您所指出的,tf.losses.mean_squared_error函数没有name参数,您可以实现自己的MSE(当然基于TF操作)

只需更换

tf_loss = tf.losses.mean_squared_error(labels,predictions)
Run Code Online (Sandbox Code Playgroud)

custom_loss = tf.reduce_mean(tf.squared_difference(labels,predictions),name='loss')
Run Code Online (Sandbox Code Playgroud)

reduce_mean接受name参数一样,您可以获得想要的东西。

完整的示例代码在这里