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

时间:2018-09-27 09:07:24

标签: python tensorflow

Tensorflow版本:1.10.1

我想将我的预训练网络中卷积层的学习权重和偏差转移到新网络中。

但是,由于我使用了apt-get upgrade API,因此检查点文件中的权重和偏差会自动命名为conv2dConv/weightsConv/biasesConv_1/weightsConv_1/biasesConv_2/weights等。

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

我知道对于C2/biases定义的变量,我可以将它们的名称设置为get_variable想要的任何字符串,其中my_varibale = tf.get_variable("whatever_name_I_want",shape,dtype,initializer)被命名为my_variable

但是,当涉及到"whatever_name_I_want"(或my_layer = tf.contrib.layers.conv2d(params_blabla)tf.nn中的等效api)时,我不知道如何命名tf.layers

那么,有可能这样做吗?如果可能,怎么办?

1 个答案:

答案 0 :(得分:2)

对于tf.layers.conv2dtf.nn.conv2d,您可以传递一个名为name的附加参数。

示例:

my_conv1 = tf.layers.conv2D(...., name='my_conv1')
my_conv2 = tf.layers.conv2D(...., name='my_conv2 ')

对于tf.contrib.layers.conv2d,参数scope用于为图层命名。

示例:

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

结果:

在所有情况下,您的权重和偏见都以my_conv1/weightsmy_conv1/bias之类的方式命名。