1、RNN(Recurrent Neural Network)循环神经网络模型

详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html

2、LSTM(Long Short Term Memory)长短期记忆神经网络模型

详见LSTM长短期记忆神经网络:http://www.cnblogs.com/pinard/p/6519110.html
 
3、LSTM长短期记忆神经网络处理Mnist数据集
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib import rnn # 载入数据集
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # 输入图片是28*28
n_inputs = 28 # 输入一行,一行有28个数据(28个像素点),即输入序列长度为28
max_time = 28 # 一共28行
lstm_size = 100 # 隐层单元
n_classes = 10 # 10个分类
batch_size = 50 # 每批次50个样本
n_batch = mnist.train.num_examples // batch_size # 计算一共有多少个批次 # 这里的none表示第一个维度可以是任意的长度
x = tf.placeholder(tf.float32, [None, 784])
# 正确的标签
y = tf.placeholder(tf.float32, [None, 10]) # 初始化权值
weights = tf.Variable(tf.truncated_normal([lstm_size, n_classes], stddev=0.1))
# 初始化偏置值
biases = tf.Variable(tf.constant(0.1, shape=[n_classes])) # 定义RNN网络
def RNN(X, weights, biases):
inputs = tf.reshape(X, [-1, max_time, n_inputs])
# 定义LSTM基本CELL
lstm_cell = rnn.BasicLSTMCell(lstm_size)
# final_state[0]是cell state
# final_state[1]是hidden_state
outputs, final_state = tf.nn.dynamic_rnn(lstm_cell, inputs, dtype=tf.float32)
results = tf.nn.softmax(tf.matmul(final_state[1], weights) + biases)
return results # 计算RNN的返回结果
prediction = RNN(x, weights, biases)
# 损失函数
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
# 使用AdamOptimizer进行优化
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# 结果存放在一个布尔型列表中
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1)) # argmax返回一维张量中最大的值所在的位置
# 求准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # 把correct_prediction变为float32类型
# 初始化
init = tf.global_variables_initializer() with tf.Session() as sess:
sess.run(init)
for epoch in range(21):
for batch in range(n_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys}) acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels})
print("Iter " + str(epoch) + ", Testing Accuracy= " + str(acc))

 结果为:

 

最新文章

  1. sql server生成递归日期
  2. 为什么我如此热爱这样一个比赛(转自vici)
  3. [转] 你是as3老鸟吗?但是有些你可能目前都不知道的东西
  4. Exchange 2013 、Lync 2013、SharePoint 2013
  5. 导航栏全透明效果, 只保留左右两个按钮, 如何实现?以及关于NavigationController的小问题
  6. 南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
  7. CodeForces 176C Playing with Superglue 博弈论
  8. delphi 反射(原理)
  9. 在storyboard中的静态UITableView中拖入 UISearchBar and Search Display Controller出现的奇怪问题
  10. cf B. I.O.U.
  11. javascript函数作用域实践
  12. Django后台设置--遇到的问题与解决方案
  13. 在Eclipse上Maven环境配置使用
  14. 开源jar包bug导致的CPU消耗200%问题分析案例
  15. 8. 环境变量_数据库_mongoose的基本使用_模型对象的CRUD
  16. group by having 判断重复的有几条数据
  17. python day06 作业答案
  18. C#new出来的结构体内存分配在堆上
  19. 搭建asp渗透测试环境
  20. CentOS7 apache

热门文章

  1. HTML功能框架
  2. vue问题八:动态加载loading、浏览器图标
  3. jqGrid整理笔记
  4. java:LeakFilling (SQL,JDBC)
  5. Golang的面向对象编程【结构体、方法、继承、接口】
  6. 小程序图片预览 wx.previewImage
  7. Spring(九)--通知
  8. cpu和内存的使用率统计
  9. Luogu P3953 [NOIP2017]逛公园
  10. centos7搭建单机redis5.0