Python 如何在Tensorflow中设置丢失操作的名称?
在Tensorflow中,我可以为操作和张量指定名称,以便以后检索它们。例如,在一个函数中,我可以Python 如何在Tensorflow中设置丢失操作的名称?,python,tensorflow,Python,Tensorflow,在Tensorflow中,我可以为操作和张量指定名称,以便以后检索它们。例如,在一个函数中,我可以 input_layer=tf.placeholder(tf.float32, shape= [None,300], name='input_layer') 然后在后面的另一个函数中,我可以 input_layer=get_tensor_by_name('input_layer:0') 我开始相信这对于使我的tf代码尽可能模块化是很方便的 我希望能够对我的丢失执行相同的操作,但如何为该操作指定自
input_layer=tf.placeholder(tf.float32, shape= [None,300], name='input_layer')
然后在后面的另一个函数中,我可以
input_layer=get_tensor_by_name('input_layer:0')
我开始相信这对于使我的tf代码尽可能模块化是很方便的
我希望能够对我的丢失执行相同的操作,但如何为该操作指定自定义名称?问题是内置的loss函数(例如)没有名称参数(与tf.placeholder、tf.variable等不同)
我现在提到我的损失的方式是
tf.get_collection(tf.GraphKeys.LOSSES)[-1]
(检索已添加到图表中的最后一个丢失操作)。我是否遗漏了一些明显的问题?我知道这并不是确切的答案,但这是一个可能对您有效的解决方案 鉴于此,正如您所指出的,函数没有
名称参数,您可以实现自己的MSE(当然基于TF操作)
替换
tf_loss = tf.losses.mean_squared_error(labels,predictions)
与
由于reduce\u意味着
接受名称
参数,您可以得到您想要的
可用的完整示例代码我想使用不可训练的变量应该可以:
labels = np.random.normal(size=10)
predictions = np.random.normal(size=10)
sess = tf.Session()
loss_var = tf.Variable(10.0, name='mse_loss', trainable=False, dtype=tf.float32)
loss = tf.losses.mean_squared_error(labels, predictions)
mse_loss = loss_var.assign(loss)
sess.run(mse_loss)
print(sess.run(tf.get_default_graph().get_tensor_by_name('mse_loss:0')))
我发现最短的方法是使用tf.identity
loss = tf.losses.mean_squared_error(labels, predictions)
loss = tf.identity(loss, name = "loss")
loss = tf.losses.mean_squared_error(labels, predictions)
loss = tf.identity(loss, name = "loss")