簡體   English   中英

Tensorflow-使用tf.contrib.layers.conv2d時,我可以設置權重和偏差的名稱嗎?

[英]Tensorflow - When using tf.contrib.layers.conv2d, can I set the name of the weights and biases?

Tensorflow版本:1.10.1

我想將我的預訓練網絡中所學的權重和卷積層的偏差轉移到新網絡中。

但是,因為我使用了conv2d api,所以檢查點文件中的權重和偏差會自動命名為Conv/weightsConv/biases Conv_1/weightsConv_1/weightsConv_1/biases Conv_2/weightsConv_2/weightsConv_2/biases等。

但是,這些名稱與代碼中的變量名稱不一致。 例如,在我的代碼中, Conv/weightsConv/biases屬於一個名為C2的變量,因此我想將其命名為C2/weightsC2/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.nntf.layers的等效api)時,我不知道如何命名my_layer

那么,有可能這樣做嗎? 如果可能的話,怎么辦?

對於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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM