什么时候在keras的源代码中调用Layer.build()?
When is Layer.build() invoked in source code in keras?
keras 中 class 层的每个派生 class 都有 build()
定义。
build()
是我们为 keras 层分配权重的地方。
这个函数什么时候在内部调用?我找不到任何可能调用它的代码
在topology.py:580层class的__call_()
中调用self.build()
,但只有在self.built = True
时才会调用。这总是在 self.build()
中设置,只有当 self.built 为真时才会调用它。
您错过了 not
条件 (source code):
if not self.built:
...
if len(input_shapes) == 1:
self.build(input_shapes[0])
else:
self.build(input_shapes)
... 这基本上意味着 "build if not already".
顺便说一下,build()
也在 count_params()
方法中被调用,同样带有一个守卫 (source code)。
keras 中 class 层的每个派生 class 都有 build()
定义。
build()
是我们为 keras 层分配权重的地方。
这个函数什么时候在内部调用?我找不到任何可能调用它的代码
在topology.py:580层class的__call_()
中调用self.build()
,但只有在self.built = True
时才会调用。这总是在 self.build()
中设置,只有当 self.built 为真时才会调用它。
您错过了 not
条件 (source code):
if not self.built:
...
if len(input_shapes) == 1:
self.build(input_shapes[0])
else:
self.build(input_shapes)
... 这基本上意味着 "build if not already".
顺便说一下,build()
也在 count_params()
方法中被调用,同样带有一个守卫 (source code)。