【发布时间】:2019-12-10 12:29:09
【问题描述】:
我正在尝试在 Tensorflow 的神经网络中实现 batch_normalization。 使用 variable_scope 完成初始化。当我运行我的程序时,我得到一个错误:
*** ValueError: Trying to share variable scope1/beta, but specified shape (100,) and found shape (100, 1).
据我了解,我必须用正确的维度初始化 beta(和其他存储的参数)。我相信我的维度应该是(100,1),因为我的第一个隐藏层中有 100 个隐藏单元。如何指定形状以符合我的 batch_normalization 的期望?
这是我的代码:
Layers = [203,100,100,100,2]
def initialize_parameters(Layers,m):
params = {}
for i in range(len(Layers)):
if i > 0:
with tf.variable_scope("scope"+str(i), reuse=None) as sp:
beta = tf.get_variable("beta", [Layers[i],1], initializer=tf.constant_initializer(0.0))
gamma = tf.get_variable("gamma",[Layers[i],1], initializer=tf.constant_initializer(1.0))
moving_avg = tf.get_variable("moving_mean", [Layers[i],1], initializer=tf.constant_initializer(0.0),trainable=False)
moving_var = tf.get_variable("moving_variance", [Layers[i],1], initializer=tf.constant_initializer(1.0),trainable=False)
lastUnits = Layers[i]
sp.reuse_variables()
return params
def forward_propagation(X, Layers, parameters, keep_prob):
for i in range(len(Layers)):
...
Z_BN = tf.contrib.layers.batch_norm(Z,is_training=True,updates_collections=ops.GraphKeys.UPDATE_OPS,scope="scope"+str(i), reuse=True)
...
return Z_BN
【问题讨论】:
标签: python tensorflow scope neural-network