我有这段代码:
from keras.models import Model
from keras.layers import Input, Dense
a = Input(shape=(32,))
b = Dense(32)(a)
<{>} Dense(32)(a)
我知道我们正在创建keras.layers.Dense
个对象,但我们创建的(a)
部分与Dense(32)
对象有什么关系?
python如何在内部理解它?
答案 0 :(得分:4)
部分b = Dense(32)(a)
创建一个Dense
图层,接收张量a
作为输入。这样做是为了允许使用具有不同输入的相同密集层(即允许共享权重)。
例如,请考虑以下代码段:
from keras.models import Model
from keras.layers import Input, Dense
a = Input(shape=(32,))
b = Input(shape=(32,))
dense = Dense(32)
c = dense(a)
d = dense(b)
这里,dense = Dense(32)
实例化一个Dense
层,它是可调用的。您可以将其视为创建一个可以在不同输入上调用的函数(即c = dense(a)
和d = dense(b)
)。这提供了一种非常方便的权重共享方式。