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

https://www.toutiao.com/a6649299295855968782/

 

2019-01-22 20:37:14

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

 

计算深度学习模型的可训练参数的数量被认为太微不足道了,因为您的代码已经可以为您完成此操作。但是我想在这里留下笔记,让我们偶尔参考一下。以下是我们将要运行的神经网络模型:

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

我们将使用Keras的API构建机器学习模型,以便于原型设计和干净的代码,因此我们可以在此处快速导入依赖库:

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

 

构建之后model,调用model.count_params()以验证可训练的参数数量。

1. 前馈神经网络(FFNN)

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

对于一个隐藏层,

num_params

=各层之间的连接+每层中的偏差

= (i×h + h×o)+(h + o)

例1.1:输入大小为3,隐藏层大小为5,输出大小为2

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

图1.1

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

num_params

=各层之间的连接+每层中的偏差

= (3×5 + 5×2)+(5 + 2)

= 32

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

 

例1.2:输入大小50,隐藏层大小[100,1,100],输出大小50

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

图1.2

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

num_params

=各层之间的连接+每层中的偏差

= (50×100 + 100×1 + 1×100 + 100×50)+(100 + 1 + 100 + 50)

= 10,451

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

 

2. 循环神经网络(RNN)

  • g,门数量(RNN有1个,GRU有3个,LSTM有4个)
  • h,隐藏单元的大小
  • i,输入的大小

每个门的权重个数实际上是一个FFNN,具有输入大小(h+i)和输出大小h。所以每个门都有h(h + i)+ h个参数。

num_params = g ×[ h(h + i)+ h ]

例2.1:具有2个隐藏单元和输入大小为3的LSTM。

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

图2.1:LSTM cell

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

num_params

= g ×[ h(h + i)+ h ]

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

= 48

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

 

例2.2:具有5个隐藏单元和输入大小为8(其输出串联)+ LSTM(50个隐藏单元)的堆叠双向GRU

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

图2.2:由BiGRU和LSTM层组成的堆叠RNN

双向GRU,5个隐藏单元,输入大小8

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

num_params_layer1

= 2 × g ×[ h(h + i)+ h ](由于是双向,第一项为2)

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

= 420

LSTM有50个隐藏单位

  • g = 4(LSTM有4个门)
  • h = 50
  • i = 5 + 5(GRU的输出大小为5,与隐藏单元的数量相同)

num_params_layer2

= g ×[ h(h + i)+ h ]

= 4×[50(50 + 10)+ 50]

= 12,200

total_params = 420 + 12,200 = 12,620

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

 

merge_mode 默认情况下是串联。

3.卷积神经网络(CNN)

对于一层,

  • i,输入映射(或通道)的数量
  • f,filter size
  • o,输出映射(或通道。这也是由使用了多少个filters定义的)的数量

一个filter应用于每个输入映射。

num_params

=权重+偏差

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

例3.1:灰度图像,输出3个通道

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

图3.1:使用2 ×2 filter对灰度图像进行卷积 输出3个通道

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

num_params

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

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

= 15

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

 

例3.2:RGB图像,1通道的输出

每个输入特征映射都有一个过滤器。生成的卷积按元素顺序添加,并向每个元素添加一个偏差项。这将给出一个带有1个feature map的输出。

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

图3.2:使用2 ×2 filter将RGB图像卷积,输出1通道

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

num_params

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

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

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

 

例3.3:具有2个通道的图像,以及3个通道的输出

每个输入feature map有3个filters(紫色、黄色、青色)。生成的卷积按元素顺序添加,并向每个元素添加一个偏差项。这给出了一个带有3个特性映射的输出。

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

图3.1:2通道图像,2 ×2 filter, 输出3个通道

这里有27个参数--24个权重和3个偏差。

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

num_params

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

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

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

 

### 回答1: 要制作三维点云深度学习模型,您可以遵循以下步骤: 1. 数据准备:收集和准备三维点云数据集。您可以使用各种传感器(例如激光雷达、结构光)来获取三维点云数据,然后对其进行预处理,例如去噪、点云配准等。 2. 特征提取:选择合适的特征提取方法来从点云数据提取特征。例如,您可以使用voxel-based方法将点云数据转换为体素网格,并使用卷积神经网络(CNN)对其进行处理。 3. 模型构建:基于您选择的特征提取方法,构建深度学习模型。您可以选择传统的CNN、循环神经网络RNN)、图神经网络(GNN)等方法来构建模型。 4. 模型训练:使用训练数据集对深度学习模型进行训练。在训练过程,您需要选择合适的损失函数和优化器,以最小化模型预测值和真实值之间的差距。 5. 模型评估:使用测试数据集对模型进行评估,并计算模型的性能指标,例如准确率、召回率、F1值等。 6. 模型应用:将模型应用于实际场景。例如,您可以使用模型来进行目标检测、物体识别等任务。 ### 回答2: 三维点云是一种表示物体或场景几何形状的数据结构。三维点云深度学习模型是使用深度学习方法对三维点云进行处理和分析的模型。下面是一般的三维点云深度学习模型设计步骤: 1. 数据预处理:首先,需要将原始三维点云数据进行预处理。这包括去噪、采样和规范化等步骤。去噪可以通过滤波算法去除噪声数据。采样则可以通过保持点云的形状特征的同时减少点云数据的数量,以降低计算复杂度。规范化可以将点云数据映射到标准坐标系,方便后续处理。 2. 特征提取:在三维点云深度学习,常常需要将点云数据转换为可供深度学习模型使用的特征表示形式。这可以通过手工设计的特征提取算法,如局部几何特征描述符或深度学习方法,如卷积神经网络等。特征提取的目标是提取出含有有用信息的表征,以便后续的分类、分割等任务。 3. 模型设计:根据任务的不同,可以选择不同的深度学习网络架构进行建模。常见的三维点云深度学习模型包括PointNet、PointNet++、DGCNN等。这些模型主要使用了卷积神经网络结构,以实现对点云的自动特征学习和模式识别。 4. 模型训练:在模型设计完成后,需要使用标注好的数据对模型进行训练。这包括将点云数据输入到模型,通过反向传播算法更新模型的权重参数。在训练过程,可以使用一些优化算法,如随机梯度下降(SGD)或Adam,来最小化损失函数并提高模型的性能。 5. 模型评估和应用:在模型训练完成后,需要对模型进行评估和测试。可以使用一些评估指标如准确率、召回率等来评估模型的性能。模型训练好后,可以使用它来进行诸如分类、分割、配准等各种不同的三维点云处理任务。 总之,建立三维点云深度学习模型的关键步骤包括数据预处理,特征提取,模型设计,模型训练和模型评估。通过这些步骤可以提高三维点云的处理效果和精度,进而实现更多的应用需求。 ### 回答3: 三维点云深度学习模型是为了处理三维点云数据而设计的深度学习网络。以下是创建三维点云深度学习模型的一般步骤: 1. 数据准备:首先,需要收集或生成三维点云数据集。这可以通过使用激光雷达扫描物体或环境来获得点云数据,并将其转换为合适的格式,如ASCII或二进制文件。 2. 数据预处理:对点云数据进行预处理是必要的,以确保其适用于深度学习模型。常见的预处理步骤包括去除离群点、点云采样、坐标归一化等。 3. 特征提取:为了使深度学习模型能够有效地处理点云数据,需要将点云转换为适用于深度学习算法的特征表示。常见的方法包括使用体素化(Voxelization)将点云表示为三维体素(voxel)表示,或者使用图卷积网络将点云表示为图结构进行处理。 4. 模型设计:选择合适的深度学习模型来处理点云数据。常用的模型包括PointNet、PointNet++、PU-Net等。这些模型可以用于分类、分割或生成任务。可以根据具体任务需求选择最合适的模型。 5. 模型训练:使用标注的点云数据对模型进行训练。训练过程,需要定义合适的损失函数来评估预测结果与真实标签之间的差异,并使用优化算法(如随机梯度下降)来更新模型参数以最小化损失。 6. 模型评估:使用测试数据集对训练好的模型进行评估。常见的评估指标包括分类准确率、分割IoU等,根据具体任务需求选择合适的评估指标。 7. 模型应用:训练好的模型可以用于各种三维点云相关的任务,如目标检测与分类、物体分割、点云重建等。根据实际需求,将模型应用到实际场景。 总结来说,要设计一个三维点云深度学习模型,需要进行数据准备、数据预处理、特征提取、模型设计、模型训练、模型评估和模型应用等步骤。这些步骤需要根据具体任务需求和数据特点进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值