1. 卷积神经网络输出维度计算公式

输出宽度 = (输入宽度 - 卷积核宽度 + 2 x 填充) / 步幅 + 1

输出高度 = (输入高度 - 卷积核高度 + 2 x 填充) / 步幅 + 1

输出通道数 = 卷积核数量

例如,如果输入特征图大小为 [32×32×3],卷积核大小为 [5×5×3],步幅为 1,填充为 2,且有10个卷积核,则输出特征图大小为 [32×32×10]。

这里注意,输出通道数等于卷积核数量。卷积核对于输入图像的每个通道进行计算,得到对于该卷积核的输出通道。由此可得,输出的通道数即为卷积核的数量。

2.数据经过池化层之后输出维度计算公式

池化层不改变通道数,只改变每个通道的特征图大小。在经过一个池化层后,特征图的维度可以用以下公式进行计算:

输出宽度 = (输入宽度 - 池化核宽度) / 步幅 + 1

输出高度 = (输入高度 - 池化核高度) / 步幅 + 1

输出通道数 = 输入通道数

例如,如果输入特征图大小为 [28×28×6],池化核大小为 [2x2],步幅为 2,则输出特征图大小为 [14×14×6]。该公式与卷积层的输出维度计算公式十分相似,唯一的区别是池化层的输出通道数等于输入通道数。

需要注意的是,对于某些边缘像素,可能无法进行正常的池化操作(例如,在最后一行/列时如果池化核无法完全放下就会出现此情况)。在这种情况下,我们可以选择在输入特征图的边缘添加一些填充,以使得池化操作可以正常进行。

3.数据经过relu之后的维度

ReLU是一种激活函数,通常不改变数据的大小,只是作用于每个神经元的输出,将其变为非负数。

因此,经过ReLU之后,数据的维度与之前相同。例如,如果输入特征图大小为 [32×32×3],经过ReLU操作后,输出的特征图大小仍然是 [32×32×3],并且每个神经元的输出都是非负的。 实际上,在深度学习中,ReLU通常被用来增加网络的非线性,并减少梯度消失的问题(但并不改变张量的形状和大小)。

4.数据经过全连接神经网络之后输出维度

全连接层是一种常用的神经网络层,其每个神经元与前一层的所有神经元都有连接,通常用于对分类或回归问题进行预测。对于全连接层,输出维度取决于神经元的数量和前一层的输出维度。

假设前一层的输出维度为 [m],当前层的神经元数量为 [n],则经过全连接层后输出的特征图大小为 [n],即一个 [1×n] 的张量。

例如,如果输入数据的维度为 [32x32x3],并且进行了一系列的卷积、池化、ReLU激活之后,最终通过一个全连接层,假设该层有1024个神经元,则输出特征向量的维度为 [1x1024],即一个包含1024个元素的向量。

5.数据经过LSTM之后的维度计算公式

LSTM(长短时记忆网络)是一种循环神经网络(RNN)变种,主要用于时序数据建模,如时间序列预测、语音识别、自然语言处理等。LSTM可以处理并传送长期的信息,避免了一般的RNN在长时间记忆上的困难。

LSTM的输入和输出通常为三维张量,其中第一维代表时间步(或序列长度),第二维代表批处理大小,第三维代表特征数量。

假设输入特征的维度为 [n×m],其中 n 表示序列长度,m 表示特征数量,经过 LSTM 层后,输出特征的维度取决于 LSTM 的输出类型和 LSTM 的神经元数目。

如果 LSTM 的输出类型是 “return_sequences=True”,则输出维度为 [n×h],其中 h 表示 LSTM 层的神经元数目,即每个时间步输出一个特征向量。

如果 LSTM 的输出类型是 “return_sequences=False”,则输出维度为 [h],即最后一个时间步输出一个特征向量。

假设 LSTM层中的神经元数目为 256,输入数据的形状为 [100×50](序列长度为100,特征数量为50),则如果output_mode = “return_sequences=True”,输出数据的形状为 [100×256];如果output_mode = “return_sequences=False”,则输出数据的形状为 [256]。

6.数据经过dropout之后的维度计算公式

Dropout是一种常用的正则化方法,其通过在网络的神经元之间引入随机性,以减少神经元之间的相互依赖性,从而防止过拟合。

在深度学习中,我们通常使用Dropout层来对全连接层或卷积层的输出进行正则化。数据经过Dropout之后,输出维度与输入维度保持不变。

假设输入张量的维度为 [batch_size, num_features],Dropout的比例为 p,其中 p 表示应该保留的数据所占百分比,即应该保留的神经元数量与总神经元数量之比。则输出张量的维度仍然为 [batch_size, num_features],但张量的某些神经元(如果采用Dropout)将被设置为零。

在推断(测试)期间,Dropout可以被认为是一个空操作,因此不会影响输出。 在训练期间,Dropout会随机将神经元的输出置零,从而使神经元之间相互独立,并且可以避免过拟合。

因此,Dropout不会改变数据的大小和维度,但会对数据张量的激活值产生随机化干扰。

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: