【问题标题】:What does this syntax mean in Keras Dropout(0.5)(X)? [duplicate]这个语法在 Keras Dropout(0.5)(X) 中是什么意思? [复制]
【发布时间】:2018-08-18 00:21:52
【问题描述】:

我知道右侧的 'X' 是您应用 dropout 之前的输入。现在当你说Dropout(0.5)(X)时,它意味着你正在随机使输入中50%的神经元的激活为零。

这一行Dropout(0.5) 表示正在创建一个 Dropout 类的新对象并在其构造函数中传递 0.5。但是在它的末尾附加X?这在 Python 语法中是什么意思?

【问题讨论】:

标签: python keras


【解决方案1】:

这段代码有多种工作方式,我现在想到了 2 种:

使用类的内置__call__函数

>>> class MyClass:
...     def __init__(self, name):
...             self.name = name
...     def __call__(self, word):
...             print(self.name, 'says', word)
...
>>> MyClass('Tom')('hello')
Tom says hello

一个函数返回一个函数

>>> def add(a):
...     def f2(b):
...             print(a+b)
...     return f2
...
>>> add(1)(2)
3

希望对你有帮助

【讨论】:

  • 在查看源代码 (Github Keras Dropout) 后,发现实际上在这种情况下使用了 __call__ 方法。感谢您分享两种可能的方法!
猜你喜欢
  • 2011-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2010-10-05
  • 1970-01-01
  • 2019-02-21
  • 2018-05-07
  • 1970-01-01
相关资源
最近更新 更多