Python Tensorflow-使用tf.contrib.layers.conv2d时,我可以设置权重和偏差的名称吗?
Tensorflow版本:1.10.1 我想把我在预训练网络中学习到的卷积层的权重和偏差转移到一个新的网络中 但是,由于我使用了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
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
应该是相似的。事实证明,在我问这个问题之前,我应该更仔细地阅读这些文档。