时序模型RNN完成手写字体识别MNIST

时序模型RNN完成手写字体识别MNIST同时考虑到循环神经网络的记忆性 所以图片从左往右输 入网络的时候 网络可以记忆住前面观察到的东西 也就是说一张图片虽然被切割成 了 28 份 但是网络能够通过记住前面的部分 同时和后面的部分结合得到最后预测数 字的输出结果 所以从理论上而言

欢迎大家来到IT世界,在知识的湖畔探索吧!

专栏推荐

(此处已添加圈子卡片,请到今日头条客户端查看)

模型

我们先来创建一个RNN神经网络,具体代码如下所示:

时序模型RNN完成手写字体识别MNIST

这个是建立了一个输入层神经元20,输出层神经元50,然后层数是2的循环神经网络,然后在最后一个时间步(out=out[:,-1,:])的输出上连接一个全连接层的神经网络,全连接的输入是RNN的隐藏层的神经元数50,然后全连接层的全连接层的神经元数是10,也就是手写字体识别的十分类问题。

当RNN的batch_first=True的时候,那么此时RNN的输出是(batch,seq,hidden * diredion),那么此时out=out[:,-1,:],就表示获取最后一个时间步seq的输出,如果要是(seq,batch,hidden * diredion)那么要想获取最后一个时间步那么此时可以out=out[-1],

然后用这个输出去连接classfier全连接神经网络用于解决分类问题。

代码为:

时序模型RNN完成手写字体识别MNIST

时序模型RNN完成手写字体识别MNIST

时序模型RNN完成手写字体识别MNIST

分析

因为im的维度是batch、通道数、图片长、图片宽,这样的维度可以直接放到卷积神经网络中,但是循环神经网络却没有办法处理这种数据,所以我们可以使用代码im = im.squeeze(1),将此时图片的通道数维度去掉,此时im的维度就变成了batch、图片长、图片宽,此时就可以将其输入到循环神经网络中了。

首先需要将图片数据转化为一个序列数据, MNIST 手写数字的图片大小是 28 x 28 , 那么可以将每张图片看作是长为 28 的序列,序列中的每个元素的特征维度是 28 ,这样 就将图片变成了一个序列。 同时考虑到循环神经网络的记忆性,所以图片从左往右输 入网络的时候,网络可以记忆住前面观察到的东西,也就是说一张图片虽然被切割成 了 28 份,但是网络能够通过记住前面的部分,同时和后面的部分结合得到最后预测数 字的输出结果,所以从理论上而言是行得通的 3

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/101996.html

(0)
上一篇 3天前
下一篇 3天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信