每次我们调用tf.layers.conv2d
时,Tensorflow都会通过添加_1
,_2
来自动为该张量创建新的内核,偏差和新名称,例如:
<tf.Variable 'conv2d/kernel:0' shape=(3, 3, 10, 10) dtype=float32_ref>,
<tf.Variable 'conv2d/bias:0' shape=(10,) dtype=float32_ref>,
<tf.Variable 'conv2d_1/kernel:0' shape=(3, 3, 10, 10) dtype=float32_ref>,
<tf.Variable 'conv2d_1/bias:0' shape=(10,) dtype=float32_ref>
conv2d/BiasAdd:0
conv2d_1/BiasAdd:0
例如,如果我想定义一个内部包含变量的类似层,
def some_layer(input):
gamma = tf.get_variable(name='gamma', shape=[10], dtype=tf.float32,
initializer=tf.constant_initializer(1.0))
x = some_layer(input)
y = some_layer(input)
这将导致ValueError: Variable gamma already exists
。我知道有一些方法可以给每个变量一个名称范围或变量范围,但是我想知道是否有任何方法可以自动创建新变量gamma_1:0
,gamma_2:0
,例如conv2d/kernel:0
,{{1 }},然后调用conv2d_1/kernel:0
。
tf.layers.conv2d
的{{3}}没有提示。