【问题标题】:When is Layer.build() invoked in source code in keras?什么时候在keras的源代码中调用Layer.build()?
【发布时间】:2018-06-16 21:38:55
【问题描述】:

keras中Layer类的每个派生类都有build()定义。

build() 是我们为 keras 层分配权重的地方。

这个函数什么时候在内部调用?我找不到任何可能调用它的代码

topology.py:580 的Layer 类的__call_() 中,我们调用self.build(),但只有在self.built = True 时才会调用它。这总是在self.build() 中设置,而只有当 self.built 为 True 时才会调用它。

【问题讨论】:

    标签: python neural-network keras keras-layer keras-2


    【解决方案1】:

    您在条件 (source code) 中错过了not

    if not self.built:
      ...
      if len(input_shapes) == 1:
        self.build(input_shapes[0])
      else:
        self.build(input_shapes)
    

    ... 这基本上意味着“如果还没有构建”。

    顺便说一句,build() 也在 count_params() 方法中被调用,同样带有保护 (source code)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      相关资源
      最近更新 更多