首页 > 编程知识 正文

搭建神经网络模型,resnet网络结构详解

时间:2023-05-06 06:49:25 阅读:48027 作者:2630

首先发布三个链接:

1.jjddyNet网络结构详解视频

2. 使用pytorch搭建jjddyNet并针对花分类数据集进行训练

3. 使用tensorflow搭建jjddyNet并针对花分类数据集进行训练

jjddyNet是2012年ils vrc 2012 (imagenetlargescalevisualrecognitionchallenge )竞赛的冠军网络,分类精度从传统方法的70%提高到80 % (jjdd ynet 那是Hinton和他的学生jjddy Krizhevsky设计的。 那一年后,深度学习开始迅速发展。 下图是从jjddyNet的原论文中截取的网络结构图。

图中有上下两个部分是因为作者使用两个GPU进行并行训练,上下两个部分的结构一模一样。 我们直接看下面的部分就可以了。 接下来,我们将讨论这个网络的亮点。

)1)首次利用GPU进行网络加速训练。

)2)使用ReLU激活函数,而不是传统的Sigmoid激活函数和Tanh激活函数。

)3)使用了LRN局部响应归一化。

)4)全连接层前两层采用Dropout方法按一定比例随机失活神经元,减少过拟合。

其次,给出经卷积或池化后矩阵大小的计算公式。

n=(wf2p )/S 1

这里,w是输入图像大小,f是卷积内核或池化内核的大小,p是填充的像素数,s是步长

接下来,我们将详细分析网络的每一层。

卷积层1

Conv1: kernels:48*2=96;kernel_size:11;padding:[1, 2] ;stride:4

其中,kernels表示卷积内核的数目,kernel_size表示卷积的大小,填充表示在特征矩阵的上下左右两侧嵌入零的参数,并且stride表示步长距离

的图像shape:[224、224、3],输出特征矩阵的shape:[55、55、96]

形状计算: n=(wf2p )/s1=[224-11(12 ) ]/4 1=55

最大池化下采样层1

Maxpool1: kernel_size:3;pading: 0;stride:2

其中,kernel_size表示池核大小,padding表示特征矩阵上下左右的填零参数,stride表示步长距离

输入特征矩阵的shape:[55、55、96],输出特征矩阵的shape:[27、27、96]

形状计算: n=(wf2p )/S1=(55-3 )/2 1=27

卷积层2

Conv2: kernels:128*2=256; kernel_size:5; padding: [2, 2]; stride:1

输入特征矩阵的shape:[27、27、96],输出特征矩阵的shape:[27、27、256]

形状计算: n=(wf2p )/s1=(27-54 )/1 ) 27

最大池化下采样层2

Maxpool2: kernel_size:3; pading: 0; stride:2

输入特征矩阵的shape:[27、27、256],输出特征矩阵的shape:[13、13、256]

形状计算: n=(wf2p )/S1=(27-3 )/2 1=13

卷积层3

Conv3: kernels:192*2=384; kernel_size:3; padding: [1, 1]; stride:1

特征矩阵shape :输入[ 13、13、256],输出特征矩阵shape:[13、13、384]

形状计算: n=[wf2p]/s1=[13-32]/1=13

卷积层4

trong>

Conv4: kernels:192*2=384; kernel_size:3; padding: [1, 1]; stride:1

输入特征矩阵shape:[13, 13, 384], 输出特征矩阵shape: [13, 13, 384]

shape计算:N = (W − F + 2P ) / S + 1 = (13 - 3 + 2) / 1 + 1 = 13

卷积层5

Conv5: kernels:128*2=256; kernel_size:3; padding: [1, 1]; stride:1

输入特征矩阵shape:[13, 13, 384],输出特征矩阵shape: [13, 13, 256]

shape计算:N = (W − F + 2P ) / S + 1 = (13 - 3 + 2) / 1 + 1 = 13

最大池化下采样层3

Maxpool3: kernel_size:3 padding: 0 stride:2

输入特征矩阵shape:[13, 13, 256] ,输出特征矩阵shape: [6, 6, 256]

shape计算:N = (W − F + 2P ) / S + 1 = (13 - 3) / 2 + 1 = 6

全连接层1

unit_size: 4096 (unit_size为全连接层节点个数,两块GPU所以翻倍)

全连接层2

unit_size: 4096

全连接层3

unit_size: 1000(该层为输出层,输出节点个数对应你分类任务的类别个数)

最后给出所有层参数的总表:

Layer Name

Kernel Size

Kernel Num

Padding

Stride

Conv1

11

96

[1, 2]

4

Maxpool1

3

None

0

2

Conv2

5

256

[2, 2]

1

Maxpool2

3

None

0

2

Conv3

3

384

[1, 1]

1

Conv4

3

384

[1, 1]

1

Conv5

3

256

[1, 1]

1

Maxpool3

3

None

0

2

FC1

4096

None

None

None

FC2

4096

None

None

None

FC3

1000

None

None

None

关于模型的搭建与训练代码放在我的github中,大家可自行下载使用:

https://github.com/WZMIAOMIAO/deep-learning-for-image-processing

pytorch版本在pytorch_learning文件夹中,tensorflow版本在tensorflow_learning文件夹中.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。