tensorflow入门——module.summary 中Param是什么,以及如何计算

        我们知道使用module.summary函数可以得到一张表格,来查看这个神经网络模型的各个参数。其中最后一列为Param参数。

目录

一 、param是什么

二、举例说明如何计算param

  1 以一个三层的全连接神经网络为例

  2 卷积神经网络中的param


       

一 、param是什么

  param代表每一层需要训练的参数个数,在全连接层是 突触权重的个数,在卷积层是卷积核的参数的个数

二、举例说明如何计算param

  1 以一个三层的全连接神经网络为例

# 定义一个三层结构,输入层,隐藏层,输出层
model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28,28)), #图片为28 28格式
    keras.layers.Dense(128, activation= tf.nn.relu),    #隐藏层有128个神经元,这个数字是自己定的
    keras.layers.Dense(10, activation = tf.nn.softmax)  #10指的输出有10个类别,10个神经元
])

             上述代码创建了一个3×3的网络,第一层将输入的28×28图片拍平成一维,第二层为隐藏层有128个神经元,第三层输出层有10个神经元。如下图所示:

网络结构 

          用module.summary可以得到如下表格:

module.summary得到的表格 

         param是每层需要训练的参数数量,因为这里的是全连接层,这里对应的是权重矩阵中参数的个数。       

  • 第一层仅仅是拍平,没有需要训练的参数,所以param为0.
  • 第二层中param为100480,是第一层28×28个输入,分别乘上对应到128个神经元的权重大小,即28×28×128 = 100352,这里只有100352个权重参数。为什么呢?因为每一层都有一个偏置bias,这个偏置是自动加上去的,每一层都有,除了最后一层。              所以需要训练的参数为(28×28+1)×128=10080
  • 同理,第三层的1290=(128+1)×100 = 1290,中间层也多加了一个偏置神经元。

2 卷积神经网络中的param

        因为param是需要训练的参数个数,在卷积层中,需要训练的参数是filter,也就是卷积核。卷积核中参数的个数,就是param的大小。同样,这里会给每个卷积核都加上一个偏置,求大小的时候注意下就好。

猜你喜欢

转载自blog.csdn.net/weixin_51286347/article/details/127739300