# 手动计算深度学习模型中的参数数量

1. 前馈神经网络 (FFNN)
2. 循环神经网络（RNN）
3. 卷积神经网络（CNN）

```from keras.layers import Input, Dense, SimpleRNN, LSTM, GRU, Conv2D
from keras.layers import Bidirectional
from keras.models import Model```

## 1. FFNNs

• i, 输入大小
• h, 隐藏层的大小
• o, 输出大小

=层间的连接+每层的偏差

=（i×h+h×o）+（h+o）

• i = 3
• h = 5
• o = 2

=层间的连接+每层的偏差

=（3×5+5×2）+（5+2）

=32

``` input = Input((None, 3))
dense = Dense(5)(input)
output = Dense(2)(dense)
model = Model(input, output)```

• i = 50
• h = 100, 1, 100
• o = 50

=层间的连接+每层的偏差

=（50×100+100×1+1×100+100×50）+（100+1+100+50）

=10,451

```input = Input((None, 50))
dense = Dense(100)(input)
dense = Dense(1)(dense)
dense = Dense(100)(dense)
output = Dense(50)(dense)
model = Model(input, output)```

## 2. RNNs

• g, 一个单元中的FFNNs的数量（RNN有1个，GRU有3个，LSTM有4个）
• h, 隐藏单元的大小
• i,输入的维度/大小

• g = 4 (LSTM有4个FFNN)
• h = 2
• i = 3

```input = Input((None, 3))
lstm = LSTM(2)(input)
model = Model(input, lstm)```

• g = 3 ( GRU有3个FFNN)
• h = 5
• i = 8

= 2 × g × [h(h+i) + h] (由于双向性，则第一项是2)

= 2 × 3 × [5(5+8) + 5] = 420

LSTM有50个隐藏单元

• g = 4 (LSTM有4个FFNN)
• h = 50
• i = 5+5 (双向GRU级联的输出；GRU的输出大小为5；隐藏单元数同为5)

```input = Input((None, 8))
layer1 = Bidirectional(GRU(5, return_sequences=True))(input)
layer2 = LSTM(50)(layer1)
model = Model(input, layer2)```

merge_mode默认是串联的。

## CNNs

• i, 输入映射的数量（或通道）no. of input maps (or channels)
• f, 滤波器大小（仅仅是长度）filter size (just the length)
• o, 输出映射的数量（或通道。这也由使用了多少滤波器来定义）

= [ i × ( f × f ) × o] + o

• i = 1 (灰度图只有一个通道)
• f = 2
• o = 3

= [1 × (2 × 2) × 3] + 3

= 15

```input = Input((None, None, 1))
conv2d = Conv2D(kernel_size=2, filters=3)(input)
model = Model(input, conv2d)```

• i = 3 (RGB图像有3个通道)
• f = 2
• o = 1

```input = Input((None, None, 3))
conv2d = Conv2D(kernel_size=2, filters=1)(input)
model = Model(input, conv2d)```

• i = 2
• f = 2
• o = 3

```input = Input((None, None, 2))
conv2d = Conv2D(kernel_size=2, filters=3)(input)
model = Model(input, conv2d)```

0 条评论

• ### 如何使用 TensorFlow mobile 将 PyTorch 和 Keras 模型部署到移动设备

截止到今年，已经有超过 20 亿活跃的安卓设备。安卓手机的迅速普及很大程度上是因为各式各样的智能 app，从地图到图片编辑器应有尽有。随着深度学习的出现，我们的...

• ### 迁移学习：如何将预训练CNN当成特征提取器

深度学习的魅力在于预训练好的模型能够对完全不同的数据集进行分类。这种能力内用了这些深度神经网络结构（在ImageNet数据集上进行过训练）的预训练权重并把其应用...

• ### js逐步教实现表单系统

注意一下；第一：取消系统默认的事件， 最重要的一点在于是否每一个都填了． 所以：

• ### C++中std::getline()函数的用法

1) 的行为就像UnformattedInputFunction, 除了input.gcount()不会受到影响.在构造和检查岗哨对象的, 执行以下操作：

• ### Pandas中groupby的这些用法你都知道吗？

pandas作为Python数据分析的瑞士军刀，集成了大量实用的功能接口，基本可以实现数据分析一站式处理。前期，笔者完成了一篇pandas系统入门教程，也针对几...