Skip to content

batch_norm layer 放在 RecurrentLayerGroup 里面时,配置解析的一个bug #961

@lcy-seso

Description

@lcy-seso

batch norm layer 作为 RecurrentLayerGroup step 函数里面的一个layer,配置解析时会出错。

比如下面的layer A 在recurrent layer group 里面, layer_group 的name 是 ”layer_group“:

    Layer(name="B",
          type='batch_norm',
          active_type="relu",
          inputs=Input("A", image=Image(channels=128, img_size=1)), )

调用 inputs=Input("A", image=Image(channels=128, img_size=1)), ) 时,input[0].input_layer_name 会被 MakeLayerNameInParentSubmodel 函数命名成 :A@layer_group。

然后batch norm layer 在解析配置时会继续调用下面的代码(config_parser.py 的 1840 ~ 1847 行)隐式地添加 mean 和 std :

        for i in xrange(2):
            inputs.append(
                Input(
                    inputs[0].input_layer_name,
                    initial_std=0.0,
                    initial_mean=0.0,
                    is_static=True,
                    is_shared=is_shared, ))

这里的 Input 会再次调用 MakeLayerNameInParentSubmodel , 将 inputs[0].input_layer_name (这时已经是 A@layer_group)命名为 :A@layer_group@layer_group,这一次重命名会引起错误。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions