Inc*_*ete 5 python default tensorflow
在 TensorFlow Python API 中,activationkwarg的默认值tf.layers.dense是None,然后在文档中它说:
激活:要使用的激活函数。如果您未指定任何内容,则不会应用任何激活(即“线性”激活:a(x) = x)。
为什么在定义函数时不直接使用恒等函数作为默认值?像这样:
def dense(..., activation=lambda x: x, ...):
pass
Run Code Online (Sandbox Code Playgroud)
这样您就不必担心文档和代码之间的不一致。
这(使用 None 表示默认函数)只是一种编码风格,还是使用函数作为 kw 参数的默认值有一些警告?
它不是为了避免不必要的函数调用,因为仍然会创建和调用标识函数,甚至None将其传递给activation. 此外,由于这发生在图构建时,因此没有必要进行这样的优化 - 假设这确实是一种优化。
更正:
正如@y-luo 所指出的,该tf实现实际上并未创建标识函数。但tf.keras实施确实如此。
我认为实际上不存在身份函数或任何函数。例如:
class Dense(base.Layer):
...
def call(self, inputs):
...
if self.activation is not None:
return self.activation(outputs) # pylint: disable=not-callable
return outputs
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,None激活实际上是正确的,因为它充当条件而不是真正的函数。它相当于“线性”激活:a(x) = x
| 归档时间: |
|
| 查看次数: |
4865 次 |
| 最近记录: |