首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >batch_normalization中错误维数的β

batch_normalization中错误维数的β
EN

Stack Overflow用户
提问于 2019-12-10 12:29:09
回答 1查看 37关注 0票数 0

我正在尝试在Tensorflow的神经网络中实现batch_normalization。初始化是用variable_scope完成的。当我运行我的程序时,我会得到一个错误:

* ValueError:尝试共享变量范围1/beta,但指定的形状(100)和找到的形状(100,1)。

据我所知,我必须用正确的维度初始化beta (和其他存储的参数)。我相信我的维度应该是( 100 ,1),因为在我的第一个隐藏层中有100个隐藏单位。我如何指定形状以满足我的batch_normalization的期望?

这是我的代码:

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 08:10:58

解决办法是只给出一个数字作为形状:

代码语言:javascript
复制
    beta = tf.get_variable("beta", shape=Layers[i], initializer=tf.constant_initializer(0.0))
    gamma = tf.get_variable("gamma", shape=Layers[i], initializer=tf.constant_initializer(1.0))
    moving_avg = tf.get_variable("moving_mean", shape=Layers[i], initializer=tf.constant_initializer(0.0),trainable=False)
    moving_var = tf.get_variable("moving_variance", shape=Layers[i], initializer=tf.constant_initializer(1.0),trainable=False)                

希望这个能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59267257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档