为啥有的Keras函数后两个(),能不能从函数的角度解释下?

很简单,Dense 等类都是基于 Layer 类的,参考class Dense(Layer),因此我们可以看看 Layer 这个类是怎么写的。
在 Layer 这个类里面,有这样一个函数:def __call__(self, inputs, **kwargs):,这个函数可以在 Python 的文档中查到:3. Data model - Python 3.6.5rc1 documentation,通过定义这个函数,我们可以让一个对象可以当函数用。因此我们可以把下面的代码拆成这样:
x = Dense(64, activation=\u0026#39;relu\u0026#39;)(x)
fc = Dense(64, activation=\u0026#39;relu\u0026#39;)x = fc(x)相信拆成下面的形式,你就可以看懂了,首先构建了一个全连接层(fc),括号里面写的是全连接层的参数。然后对 x 进行全连接操作,输入原张量,输出新张量。

■网友
【为啥有的Keras函数后两个(),能不能从函数的角度解释下?】 Dense(64, activation=\u0026#39;relu\u0026#39;) 执行_init函数用于初始化得到一个类,然后调用对执行类的__call__函数,x = Dense(64, activation=\u0026#39;relu\u0026#39;)(inputs),然后得到输出.


    推荐阅读