综合_详解keras的model.summary()输出参数output shape 与 Param,计算过程

(综合)详解keras的model.summary()输出参数output shape 与 Param,计算过程

公式总结:

  • 基本神经网络 Param计算过程
公式:
***dense 层*** 
Param = (输入数据维度+1* 神经元个数
之所以要加1,是考虑到每个神经元都有一个Bias。
  • 卷积神经网络Param计算过程
公式
***Conv1D***
Param = (卷积核大小 x 词向量维度 + 1) x 卷积核个数 

***Conv2D***
Param = (卷积核长度*卷积核宽度*通道数+1*卷积核个数
下一层的通道数 = 上一层的卷积核个数

***klayers.Embedding() :词嵌入层*** 
 Param = 词表数*词向量维度

举例:

计算逻辑:

第一层:
output:[(None,32,32,3)] :第一个None 指batch,后面的(32,32,3)由输入shape决定;
param: 输入层 为 0 ;
第二层:因为是conv2D ,Param = (卷积核长度卷积核宽度通道数+1)卷积核个数
output:(None,30,30,32) : kernel_size=(3,3) ,30=32-3+1(移动次数,要将所有的信息都包含)。32=(卷积核个数)
param: 896 = (3
33+1)32
第三层:
output:(None,15,15,32)池化层,默认为上一层的一半 (15=30/2) ,最后的维度为卷积核个数不变 32
param: 池化层,只是降维,不需要参数
第四层:与第二层同理,另外:下一层的通道数 = 上一层的卷积核个数
output:(None,11,11,64),kernel_size=(5,5),11=15-5+1,32=(卷积核个数)
param:51264=(5
5
32+1)*64
第五层:与第三层同理
output:(None,5,5,64)池化层,默认为上一层的一半 (5=11/2)(取下) ,最后的维度为卷积核个数不变 64
param: 池化层,只是降维,不需要参数

第六层:dropout层,????
output:(None,5,5,64) 不变
param: 没有

第七层:flatten层
output:(None,1600) : 多维转一维,多维自由组合 ,结果等于多维相乘。1600=5564
param: 没有

第八层:dense层,基本神经网络,Param = (输入数据维度+1)* 神经元个数

output:(None,32) :32=(卷积核个数)
param: 51232=(1600+1)*32 (输入数据维度,由上一层决定)

第九层:与第八层同理

output:(None,1) :1=(卷积核个数)
param: 33=(32+1)*1 (输入数据维度,由上一层决定)

参考–感谢,如果看不懂,可以参考以下 链接

https://blog.csdn.net/qq_40642546/article/details/106622996
https://blog.csdn.net/ybdesire/article/details/85217688

如有错误,或者更好的理解,欢迎指出

你可能感兴趣的:(python,TensorFlow,卷积,神经网络,深度学习,tensorflow)