deep_learning_LSTM长短期记忆神经网络处理Mnist数据集

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数据集


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

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表示第一个维度可以是任意的长度

= tf.placeholder(tf.float32, [None784])

# 正确的标签

= tf.placeholder(tf.float32, [None10])

# 初始化权值

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))

 结果为:

 

转自:https://www.cnblogs.com/asialee/p/9277161.html

原文地址:https://www.cnblogs.com/0405mxh/p/11634854.html

时间: 2024-08-01 23:03:46

deep_learning_LSTM长短期记忆神经网络处理Mnist数据集的相关文章

Tensorflow学习教程------普通神经网络对mnist数据集分类

首先是不含隐层的神经网络, 输入层是784个神经元 输出层是10个神经元 代码如下 #coding:utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = input_data.read_data_sets("MNIST_data", one_hot=True) #每个批次的大小 batch_size = 100 #计算一共有多少个批次

Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_训练模型

原理就不多讲了,直接上代码,有详细注释. #coding:utf-8 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets('MNIST_data',one_hot=True) #每个批次的大小 batch_size = 100 n_batch = mnist.train._num_examples // batch_

matlab练习程序(神经网络识别mnist手写数据集)

记得上次练习了神经网络分类,不过当时应该有些地方写的还是不对. 这次用神经网络识别mnist手写数据集,主要参考了深度学习工具包的一些代码. mnist数据集训练数据一共有28*28*60000个像素,标签有60000个. 测试数据一共有28*28*10000个,标签10000个. 这里神经网络输入层是784个像素,用了100个隐含层,最终10个输出结果. arc代表的是神经网络结构,可以增加隐含层,不过我试了没太大效果,毕竟梯度消失. 因为是最普通的神经网络,最终识别错误率大概在5%左右. 迭

【TensorFlow/简单网络】MNIST数据集-softmax、全连接神经网络,卷积神经网络模型

初学tensorflow,参考了以下几篇博客: soft模型 tensorflow构建全连接神经网络 tensorflow构建卷积神经网络 tensorflow构建卷积神经网络 tensorflow构建CNN[待学习] 全连接+各种优化[待学习] BN层[待学习] 先解释以下MNIST数据集,训练数据集有55,000 条,即X为55,000 * 784的矩阵,那么Y为55,000 * 10的矩阵,每个图片是28像素*28像素,带有标签,Y为该图片的真实数字,即标签,每个图片10个数字,1所在位置

MNIST数据集上卷积神经网络的简单实现(使用PyTorch)

设计的CNN模型包括一个输入层,输入的是MNIST数据集中28*28*1的灰度图 两个卷积层, 第一层卷积层使用6个3*3的kernel进行filter,步长为1,填充1.这样得到的尺寸是(28+1*2-3)/1+1=28,即6个28*28的feature map 在后面进行池化,尺寸变为14*14 第二层卷积层使用16个5*5的kernel,步长为1,无填充,得到(14-5)/1+1=10,即16个10*10的feature map 池化后尺寸为5*5 后面加两层全连接层,第一层将16*5*5

如何预测股票分析--长短期记忆网络(LSTM)

在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network). 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成.它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的

windows下的cafee训练和测试mnist数据集

一.mnist数据集 mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试样本集.mnist数据库官方网址为:http://yann.lecun.com/exdb/mnist/ .可直接下载四个解压文件,分别对应:训练集样本.训练集标签.测试集样本和测试集标签.解压缩之后发现,其是在一个文件中包含了所有图像. 二.caffe支持的数据格式:Lmdb和Leveldb 它们都

利用keras搭建CNN进行mnist数据集分类

当接触深度学习算法的时候,大家都很想自己亲自实践一下这个算法,但是一想到那些复杂的程序,又感觉心里面很累啊,又要学诸如tensorflow.theano这些框架.那么,有没有什么好东西能够帮助我们快速搭建这个算法呢?当然是有咯!,现如今真不缺少造轮子的大神,so,我强烈向大家推荐keras,Keras是一个高层神经网络API,Keras由纯Python编写而成并基Tensorflow或Theano.Keras为支持快速实验而生,能够把你的idea迅速转换为结果. 具体keras的安装与使用,请参

使用caffe训练mnist数据集 - caffe教程实战(一)

个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231n.stanford.edu/syllabus.html Ubuntu安装caffe教程参考:http://caffe.berkeleyvision.org/install_apt.html 先讲解一下caffe设计的架构吧: 训练mnist数据集使用 build/tools/caffe 训练步骤: