【问题标题】:How to calculate number of parameters in Keras models?如何计算 Keras 模型中的参数数量?
【发布时间】:2020-03-19 10:21:16
【问题描述】:

这是我的模型:

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
__________________________________________________________________________________________________

【问题讨论】:

    标签: python-3.x keras neural-network deep-learning


    【解决方案1】:

    回答您的问题:

    1. 4 源于output_size * (input_size + 1) = number_parameters。从 concatenate_1[0][0] 你有 3 个连接和 1 个偏差,因此 4

    2. 10880Team-1Team-2 连接到的嵌入层的大小。这是将要使用的总“词汇表”,与输出无关(这是Embedding 的第二个参数)。

    我希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 2017-11-20
      • 2016-06-17
      • 2020-07-11
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 2016-11-04
      • 2017-12-16
      • 2013-03-30
      相关资源
      最近更新 更多