tf.layers如何创建变量?

时间:2018-11-06 23:14:37

标签: python tensorflow

每次我们调用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:0gamma_2:0,例如conv2d/kernel:0,{{1 }},然后调用conv2d_1/kernel:0

tf.layers.conv2d的{​​{3}}没有提示。

1 个答案:

答案 0 :(得分:0)

Tensorflow教程custom layers给出了答案。如果需要构建自定义层,则需要扩展类tf.keras.layers.Layer