因为Dense(...)
返回一个可调用的(基本上是一个函数),所以可以依次调用它。这是一个简单的例子:
def make_adder(a):
def the_adder(b):
return a + b
return the_adder
add_three = make_adder(3)
add_three(5)
# => 8
make_adder(3)(5)
# => 8
在这里,make_adder(3)
返回定义为
def the_adder(b)
return 3 + b
然后使用参数5
return调用该函数8
。如果跳过将返回值make_adder(3)
赋给一个单独变量的步骤,则会得到您所询问的形式:与您的问题make_adder(3)(5)
相同Dense(64, activation='relu')(inputs)
。
编辑:从技术上讲,Dense
不是在Python中归类为函数,而是归为一类;Dense(...)
因此是对构造函数的调用。所讨论的类定义__call__
方法,该方法使此类的对象“可调用”。可以通过使用参数列表调用函数和可调用对象来调用它们,并且两者之间的差异完全不影响解释。但是,这是一个简单的可调用示例,该示例更为相似Dense
:
class Adder:
def __init__(self, a):
self.a = a
def __call__(self, b):
return self.a + b
adder_of_three = Adder(3)
adder_of_three(5)
# => 8
Adder(3)(5)
# => 8