这是我的模特:
from keras.layers import Input, Embedding, Flatten
from keras.models import Model
n_teams = 10888
team_lookup = Embedding(input_dim=n_teams,
output_dim=1,
input_length=1,
name='Team-Strength')
teamid_in = Input(shape=(1,))
strength_lookup = team_lookup(teamid_in)
strength_lookup_flat = Flatten()(strength_lookup)
team_strength_model = Model(teamid_in, strength_lookup_flat, name='Team-Strength-Model')
team_in_1 = Input(shape=(1,), name='Team-1-In')
team_in_2 = Input(shape=(1,), name='Team-2-In')
home_in = Input(shape=(1,), name='Home-In')
team_1_strength = team_strength_model(team_in_1)
team_2_strength = team_strength_model(team_in_2)
out = Concatenate()([team_1_strength, team_2_strength, home_in])
out = Dense(1)(out)
当我用10888个输入拟合模型并运行摘要时,我总共得到10892个参数,请向我解释:
1)这4个来自哪里?和
2)如果我的每个输出都是10888,为什么它只计数一次?
以下是模型的摘要:
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
Team-1-In (InputLayer) (None, 1) 0
__________________________________________________________________________________________________
Team-2-In (InputLayer) (None, 1) 0
__________________________________________________________________________________________________
Team-Strength (Model) (None, 1) 10888 Team-1-In[0][0]
Team-2-In[0][0]
__________________________________________________________________________________________________
Home-In (InputLayer) (None, 1) 0
__________________________________________________________________________________________________
concatenate_1 (Concatenate) (None, 3) 0 Team-Strength[1][0]
Team-Strength[2][0]
Home-In[0][0]
__________________________________________________________________________________________________
dense_1 (Dense) (None, 1) 4 concatenate_1[0][0]
==================================================================================================
Total params: 10,892
Trainable params: 10,892
Non-trainable params: 0
__________________________________________________________________________________________________
答案 0 :(得分:1)
要回答您的问题:
4
源自output_size * (input_size + 1) = number_parameters
。从concatenate_1[0][0]
开始,您有3个关联和1个偏差,因此4
。
10880
是Team-1
和Team-2
连接到的嵌入层的大小。这是将要使用的总“词汇”,与输出无关(这是Embedding
的第二个参数)。
我希望这是有道理的。