Python Tensorflow-使用tf.contrib.layers.conv2d时,我可以设置权重和偏差的名称吗?

Python Tensorflow-使用tf.contrib.layers.conv2d时,我可以设置权重和偏差的名称吗?,python,tensorflow,Python,Tensorflow,Tensorflow版本:1.10.1 我想把我在预训练网络中学习到的卷积层的权重和偏差转移到一个新的网络中 但是,由于我使用了conv2dapi,检查点文件中的权重和偏差会自动命名为Conv/weights,Conv/biases,Conv\u 1/weights,Conv\u 1/biases,Conv\u 2/weights等 但是,这些名称与代码中的变量名不一致。 例如,Conv/weights,Conv/biases在我的代码中属于名为C2的变量,因此我想将它们命名为C2/weight

Tensorflow版本:1.10.1

我想把我在预训练网络中学习到的卷积层的权重和偏差转移到一个新的网络中

但是,由于我使用了
conv2d
api,检查点文件中的权重和偏差会自动命名为
Conv/weights
Conv/biases
Conv\u 1/weights
Conv\u 1/biases
Conv\u 2/weights

但是,这些名称与代码中的变量名不一致。 例如,
Conv/weights
Conv/biases
在我的代码中属于名为
C2
的变量,因此我想将它们命名为
C2/weights
C2/biases

我知道对于由
get\u variable
定义的变量,我可以通过
my\u variable=tf.get\u variable将它们的名称设置为我想要的任何字符串(“任意名称、形状、数据类型、初始值设定项”)
,其中
my\u variable
被命名为
“任意名称”

然而,当涉及到
my_layer=tf.contrib.layers.conv2d(params_blablabla)
(或
tf.nn
tf.layers
中的等效api)时,我不知道如何命名
my_layer

那么,有可能做到这一点吗?如果可能,如何传递?

对于,您可以传递一个名为
name
的附加参数

示例:

my_conv1 = tf.layers.conv2D(...., name='my_conv1')
my_conv2 = tf.layers.conv2D(...., name='my_conv2 ')
with tf.name_scope('my_conv1') as scope:
    my_conv1 = tf.contrib.layers.conv2d(..., scope=scope) 
对于参数
scope
,它用于为层命名名称空间

示例:

my_conv1 = tf.layers.conv2D(...., name='my_conv1')
my_conv2 = tf.layers.conv2D(...., name='my_conv2 ')
with tf.name_scope('my_conv1') as scope:
    my_conv1 = tf.contrib.layers.conv2d(..., scope=scope) 
结果:

my_conv1 = tf.layers.conv2D(...., name='my_conv1')
my_conv2 = tf.layers.conv2D(...., name='my_conv2 ')
with tf.name_scope('my_conv1') as scope:
    my_conv1 = tf.contrib.layers.conv2d(..., scope=scope) 

在所有情况下,您的权重和偏差都被命名为,例如
my_conv1/weights
my_conv1/bias

谢谢。我在
tf.contrib.layers
中没有看到
name
,我认为
tf.nn
tf.layers
应该是相似的。事实证明,在我问这个问题之前,我应该更仔细地阅读这些文档。