python实现cnn算法_MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)...

版权声明:本文为博主原创文章,欢迎转载,并请注明出处。联系方式:[email protected]

网络定义代码:

#定义网络模型

class LeNet(nn.Module):

def __init__(self):

super(LeNet, self).__init__()

self.cnn = nn.Sequential(

#卷积层1,单通道输入,6个卷积核,核大小5*5

#经过该层图像大小变为28-5+1,24*24

#经2*2最大池化,图像变为12*12

nn.Conv2d(1, 6, 5),

nn.ReLU(),

nn.MaxPool2d(2),

#卷积层2,6通道,16个卷积核,核大小5*5

#经过该层图像变为12-5+1,8*8

# 经2*2最大池化,图像变为4*4

nn.Conv2d(6, 16, 5),

nn.ReLU(),

nn.MaxPool2d(2)

)

self.fc = nn.Sequential(

# 16个feature,每个feature4*4

nn.Linear(16 * 4 * 4, 120),

nn.ReLU(),

nn.Linear(120, 84),

nn.ReLU(),

nn.Linear(84, 10)

)

def forward(self, x):

x = self.cnn(x)

x = x.view(x.size()[0], -1)

x = self.fc(x)

return x

网络训练结果准确率约在99%,LeNet-5比前面的全连接神经网络高1.x%。运行结果如下:

train data num: 60000 , test data num: 10000

epoch:0 i:999 loss:0.11399480700492859

epoch:0 i:1999 loss:0.1237913966178894

epoch:0 i:2999 loss:0.12948277592658997

EPOCH:0, ACC:97.5

epoch:1 i:999 loss:0.006639003753662109

epoch:1 i:1999 loss:0.0011253952980041504

epoch:1 i:2999 loss:0.03325369954109192

EPOCH:1, ACC:98.35

epoch:2 i:999 loss:0.0021111369132995605

epoch:2 i:1999 loss:0.2714851200580597

epoch:2 i:2999 loss:0.0016380250453948975

EPOCH:2, ACC:98.64

epoch:3 i:999 loss:0.00033468008041381836

epoch:3 i:1999 loss:0.05128034949302673

epoch:3 i:2999 loss:0.1222798228263855

EPOCH:3, ACC:98.65

epoch:4 i:999 loss:0.0006810426712036133

epoch:4 i:1999 loss:0.002728283405303955

epoch:4 i:2999 loss:0.000545889139175415

EPOCH:4, ACC:98.89

epoch:5 i:999 loss:0.006086885929107666

epoch:5 i:1999 loss:0.07402010262012482

epoch:5 i:2999 loss:0.03638958930969238

EPOCH:5, ACC:98.93

epoch:6 i:999 loss:0.0002015829086303711

epoch:6 i:1999 loss:0.0004933476448059082

epoch:6 i:2999 loss:0.03196592628955841

EPOCH:6, ACC:99.02

epoch:7 i:999 loss:0.01734447479248047

epoch:7 i:1999 loss:2.9087066650390625e-05

epoch:7 i:2999 loss:0.018512487411499023

EPOCH:7, ACC:98.73

epoch:8 i:999 loss:4.70280647277832e-05

epoch:8 i:1999 loss:0.008362054824829102

epoch:8 i:2999 loss:2.9206275939941406e-06

EPOCH:8, ACC:98.84

epoch:9 i:999 loss:0.00012737512588500977

epoch:9 i:1999 loss:0.00020432472229003906

epoch:9 i:2999 loss:0.00022774934768676758

EPOCH:9, ACC:99.1

MINIST pytorch LeNet-5 Train: EPOCH:10, BATCH_SZ:16, LR:0.05

train spend time:  0:01:05.897404

损失函数值变化曲线为:

【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络GoogLeNet

前面讲了LeNet.AlexNet和Vgg,这周来讲讲GoogLeNet.GoogLeNet是由google的Christian Szegedy等人在2014年的论文

【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet

上周我们用PaddlePaddle和Tensorflow实现了图像分类,分别用自己手写的一个简单的CNN网络simple_cnn和LeNet-5的CNN网络识别cifar-10数据集.在上周的实验表现 ...

【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络Vgg

上周我们讲了经典CNN网络AlexNet对图像分类的效果,2014年,在AlexNet出来的两年后,牛津大学提出了Vgg网络,并在ILSVRC 2014中的classification项目的比赛中取得 ...

深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)

1.准备数据 把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1.每一行表示一个 ...

tensorflow中使用mnist数据集训练全连接神经网络-学习笔记

tensorflow中使用mnist数据集训练全连接神经网络 ——学习曹健老师“人工智能实践:tensorflow笔记”的学习笔记, 感谢曹老师 前期准备:mnist数据集下载,并存入data目录: ...

TensorFlow之DNN(二):全连接神经网络的加速技巧(Xavier初始化、Adam、Batch Norm、学习率衰减与梯度截断)

在上一篇博客中,我整理了一个用TensorFlow实现的简单全连接神经网络模型,没有运用加速技巧(小批量梯度下降不算哦) ...

TensorFlow之DNN(一):构建“裸机版”全连接神经网络

博客断更了一周,干啥去了?想做个聊天机器人出来,去看教程了,然后大受打击,哭着回来补TensorFlow和自然语言处理的基础了.本来如意算盘打得挺响,作为一个初学者,直接看项目(不是指MINIST手写 ...

SIGAI深度学习第八集 卷积神经网络2

讲授Lenet.Alexnet.VGGNet.GoogLeNet等经典的卷积神经网络.Inception模块.小尺度卷积核.1x1卷积核.使用反卷积实现卷积层可视化等. 大纲: LeNet网络 Ale ...

SIGAI深度学习第七集 卷积神经网络1

讲授卷积神经网络核心思想.卷积层.池化层.全连接层.网络的训练.反向传播算法.随机梯度下降法.AdaGrad算法.RMSProp算法.AdaDelta算法.Adam算法.迁移学习和fine tune等 ...

随机推荐

CentOS下设置默认JDK

最近在弄Linux,用yum源安装opnjdk-devel版本后,用命令ll /etc/alternatives/java查看,发现指向的是jre目录,而不是jdk,在此设置指向jdk目录. 1. 设 ...

Android 通过Base64上传图片到服务器

之前做上传图片是采用HttpServlet上传,不过用了一下Base64上传图片后,感觉比HttpServlet方便很多,大家也可以跟着尝试一下. 前台图片处理:(传Bitmap对象即可) /** * ...

mvc中怎么读取htm的文件

@Html.Raw(File.ReadAllText(Server.MapPath("/Include/head01.htm")))

java 保留字段volatile、transient、native、synchronized

1.volatile Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程.当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享 ...

检测Linux服务器端口是否开通

现如今云服务器已经是大势所趋,国内比较著名的云服务器厂商有阿里.腾讯,国外有aws,尽管有的公司目前为止还是使用的物理机,但是无论你是使用的云服务器还是物理机,在运行服务时都必不可少的需要监听到指定的 ...

XML 实体

实体可以简单的理解为引用数据项的方法,可以是普通的文本也可以是二进制数据. 实体可以分为通用实体和参数实体.通用实体用于XML当中,用于引用文本或者二进制数据,而参数实体只能在DTD中使用.通用实体与 ...

for update 和 t.rowid的区别

select * from table_name for update; 和 select t.*, t.rowid from table_name t 的区别 前者会对你查询出来的结果加上锁,而后者 ...

Redis学习篇(十)之排序

SORT 按照键值从小到大或者从大到小的顺序进行排序 对数字进行排序 语法:SORT key [DESC] 默认情况下,是升序排序,可以指定DESC进行降序排序 对字母进行排序 语法:SORT key ...

NPOI List数据源 导出excel

List数据源生成HSSFWorkbook通用方法: public class WorkBook { public static HSSFWorkbook BuildSwitchData

你可能感兴趣的:(python实现cnn算法)