用rnn网络训练mnist数据集

用rnn训练mnist数据集

与以往cnn卷积神经网路不同,rnn的思想是数据信息有顺序,所以rnn一般用来训练文本数据信息,就像小时候的填空题一样,我们能根据上下文判断这个空应该填什么,这前面的文字和后面的文字都是有顺序的。

用rnn训练图片分类也有其优点,例如每个人都是头朝上脚朝下(个别倒立的例外),在这里我们就用rnn网络训练mnist数据集。

mnist手写数字图片是28*28的,假设每次训练128张图片, 则训练集数据的shape为[128, 28, 28]

这里主要讲一下rnn神经网络:
在这里插入图片描述
rnn是个有向循环网络,以这个demo为例,图片是28*28的,以28轮向rnn网络添加Xt信息(X1-X28),每次的信息量是(batch_size, 28),与U进行矩阵相乘,(每一轮的U,W,V是通用的),运算公式:在这里插入图片描述
g,f都是对应的激活函数,设:
Xt.shape=[b, m]
U.shape=[m, n], n为隐藏节点个数
W.shape=[n, n]
S(t-1) = [b, n]
所以St = tf.matmul(tf.concat([Xt, S(t-1)], -1), tf.concat([U, W], 0))
在这里我们只有n(隐藏节点个数)和S0是未知的 ,在代码实现中,我们只需要3句代码就能实现rnn网络过程:

# 初始化隐藏节点个数
rnn_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_num)
# 初始化S0
init_state = rnn_cell.zero_state(batch_size, dtype=tf.float32)
# 构建完整的rnn网络
out, out_last = tf.nn.dynamic_rnn(rnn_cell, X, initial_state=init_state, time_major=False)

完整代码如下:

import tensorflow as tf
from tensorflow.examples
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值