Tensorflow之RNN,LSTM

Tensorflow之RNN,LSTM

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
tensorflow之RNN
循环神经网络做手写数据集分类
"""import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data#设置随机数来比较两种计算结果
tf.set_random_seed(1)#导入手写数据集
mnist = input_data.read_data_sets('MNIST_data', one_hot=True)#设置参数
lr = 0.001
training_iters = 100000
batch_size = 128n_inputs = 28   # MNIST 输入为图片(img shape: 28*28)对应到图片像素的一行
n_steps = 28    # time steps 对应到图片有多少列
n_hidden_units = 128   # 隐藏层神经元个数
n_classes = 10      # MNIST分类结果为10#定义权重
weights = {#(28,128)'in': tf.Variable(tf.random_normal([n_inputs, n_hidden_units]))#(128,10)'out': tf.Variable(tf.random_normal([n_hidden_units, n_classes]))}
#定义bias
biases = {# (128, )'in': tf.Variable(tf.constant(0.1, shape=[n_hidden_units, ])),# (10, )'out': tf.Variable(tf.constant(0.1, shape=[n_classes, ]))
}def RNN(X, weights, biases):#作为cell输入的隐藏层#######################################################输入层#将输入shape从X三维输入变为二维(128 batch * 28 steps, 128 hidden)X = tf.reshape(X, [-1,n_inputs])#隐藏层# X_in = (128 batch * 28 steps, 128 hidden)X_in = tf.matmul(X, weights['in']) + biases['in']# 传给cell时需要将二维转为三维X_in ==> (128 batch, 28 steps, 128 hidden)X_in = tf.reshape(X_in, [-1, n_steps, n_hidden_units])#cell########################################################LSTM cell forget_bias=1.0表示最开始学习我们不希望忘掉任何state, 
   #state_is_tuple=True这个为true表示记录每个时间点的cell状态和输出值,以后会默认为true
cell = tf.contrib.rnn.BasicLSTMCell(n_hidden_units,forget_bias=1.0,state_is_tuple=True)#将lstm cell 分成两部分(c_state, h_state),对应到lstm一个是主线c_state(没有cell的遗忘),
   #支线是h_state(有cell的遗忘),zero_state将每个t时间的cell初始化为0,
init_state = cell.zero_state(batch_size, dtype=tf.float32)#outputs为lstm所有输出结果包括每个时刻cell的state,和输出值,final_state为最后的结果,
   #time_major参数表示时间序列的位置是否为输入数据的第一个维度,由于我们是在第二个维度,所以为false
outputs, final_state
= tf.nn.dynamic_rnn(cell, X_in, initial_state=init_state, time_major=False)#1.将隐藏层的输出作为最后结果,只有一个结果#results = tf.matmul(final_state[1], weights['out']) + biases['out']#2.将每一步的结果输出到lists,在对outputs unstack后[1,0, 2]是将outputs list中每个tuple中元素对应展开tf.unstack(tf.transpose(outputs, [1, 0, 2]))results = tf.matmul(outputs[-1], weights['out']) + biases['out'] # shape = (128, 10)return resultspred = RNN(x, weights, biases) cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred, labels=y)) train_op = tf.train.AdamOptimizer(lr).minimize(cost)correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) with tf.Session() as sess:init = tf.global_variables_initializer()sess.run(init)step = 0while step * batch_size < training_iters:batch_xs, batch_ys = mnist.train.next_batch(batch_size)batch_xs = batch_xs.reshape([batch_size, n_steps, n_inputs])sess.run([train_op], feed_dict={x: batch_xs,y: batch_ys,})if step % 20 == 0:print(sess.run(accuracy, feed_dict={x: batch_xs,y: batch_ys,}))step += 1

 

转载于:https://www.cnblogs.com/xmeo/p/7230723.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python selenium T3

python selenium T3 既然要做自动,就得对得起自动化的这个名字。这一章我们将进一步的增加自动化测试的实用,增加自动发邮件功能、多线程 和定时任务,让我们的自动化工作真正变得高效而又强大起来。 EG1 : with open(report.html , r) as f:msg MIMEText(f.read() , _subtypeh…

RT-Thread中自定义MSH命令传入的参数是字符串,需用户自行检查和解析

如下是在将安富莱的dac8563模块对接到潘多拉开发板RT-Thread SPI设备框架中时导出到RT-Thread的自定义MSH命令&#xff0c;需要注意的是MSH传入的是字符串&#xff0c;需要自行对字符串进行解析处理。 #include "stdlib.h" /* 使用其中的函数&#xff1a;atoi(); */…

水平+垂直布局-css (借鉴)

1. 水平居中 方法一&#xff1a;margin:0 auto; &#xff08;最常用的居中布局方式&#xff09;方法二&#xff1a;text-align和inline-block的结合&#xff08;设置父元素的text-align为center&#xff09;。 这种方式最好应用于图片、按钮、文字之类的居中模式&#xff0c;否…

安富莱DAC8653模块

产品规格&#xff1a;1、供电电压 &#xff1a; 2.7 - 5.5V 【3.3V供电时&#xff0c;输出电压也可以到正负10V】2、通道数&#xff1a; 2路 &#xff08;通过1片DAC8563实现&#xff09;3、输出电压范围 &#xff1a; -10V ~ 10V 【客户可以自己更改为 0-10V输出范围。使…

AD16 SCH原理图打开正常,PCB图纸打开为空白或仍是上一个界面的解决方法

重新安装AD16并激活后&#xff0c;发现SCH图纸打开正常&#xff0c;但打开PCB图纸时要么显示一片空白&#xff0c;要么显示的还是上一屏的内容&#xff0c;重启AD16软件或者重启电脑都没有用。 【问题原因】电脑显卡驱动有问题 【解决方法】更新或重新安装电脑显卡驱动 step…

flex布局应用与踩坑

一、预告本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道&#xff1a; 1、初学前端&#xff0c;对前端的传统布局还不是很熟悉的人 2、后端人员对前端不打算深入学习的同学 二、开篇flex布局原本是好几个月前就一直想学习的东西&#xff0c;当时flex布局还算是比较新鲜…

RT-Thread I/O设备模型

I/O设备指的是嵌入式系统中的一些Input输入/Output输出设备&#xff0c;输入输出设备是嵌入式系统重要的组成部分。输入和输出设备可以看做是计算机系统和外界进行沟通的桥梁&#xff0c;因此在计算机组成原理中输入输出设备是重要的组成部分。 计算机组成原理中的5大组成部分…

如何使用易我数据恢复向导恢复数码相机删除的图片

1 使用"易我数据恢复向导"的高级恢复(务必将数码相机的存储卡取出单独插入SD卡槽,而不是直接用数据线连接到电脑上,这样存储卡才能以磁盘方式显示) 2 选中对应磁盘,点击下一步 3 如果出现"分区参数不正确"提示&#xff0c;直接取消即可开始搜索 4 搜索完…

RT-Thread对GPIO操作两种方式的区别:1)通过设备操作接口2)直接通过通用GPIO设备驱动

在学习RT-Thread设备驱动框架时&#xff0c;看到潘多拉开发板的RT-Thread例程资料中的文档《AN0002-RT-Thread-通用 GPIO 设备应用笔记》有如下描述&#xff0c;因此产生使用文档中未使用的方式1&#xff09;通过设备操作接口 方法实现GPIO操作的想法&#xff01; 使用潘多拉开…

英语----情态动词(下)

should 应该 竟然 Youd should go to school right now. I should help him. How should i know. Im surprised tha he that he should be so rude to you. it worries me its a pity. You cant imagine.... ought to // 用在比较严肃的场合 You ought to take car…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(一)

I2C是一种双向2线制同步串行通讯接口&#xff0c;是一类非常经典的串行总线通讯&#xff0c;理解好I2C通讯会帮助理解USB通讯、以太网通讯中的握手、数据帧等环节。 I2C的发展历史&#xff1a; SPI串行通讯主要是由MOTOROLA公司提出的&#xff0c;MOTOROLA公司的半导体部门独立…

清华大学-曾鸣-《ARM微控制器与嵌入式系统》I2C总线(二)

I2C&#xff08;Inter IC Bus&#xff09;的通讯数据帧&#xff1a; SCL线无方向区分&#xff0c;SDA线上有数据的流动方向。上图中灰色的代表的是主机向从机发送数据&#xff0c;此时SDA线的电平控制权由主机掌控&#xff0c;从机只能监听该线上的电平状态。白色代表的是从机向…

window.open 和showModalDialog的返回值

方法&#xff1a; 1: 在父级页面 test.aspx 的点击<input type"button" id"btnShow" οnclick"showItem();" value"显示子窗体"/>按钮触发 &#xff0c;然后 &#xff1a; <script language"JavaScript" type&qu…

RT-Thread I2C设备驱动框架的对接使用

I2C和SPI是MCU和板载芯片之间最常用的通讯方式&#xff0c;现在先介绍下I2C总线。I2C的基本原理也很简单&#xff0c;只需要两根线&#xff08;时钟线SCL和信号线SDA&#xff09;即可实现挂载在I2C总线上设备之间的相互通讯。I2C协议并未规定I2C总线上哪个是主机&#xff1f;哪…

给lnmp一键包中的nginx安装openresty的lua扩展

lnmp一键包&#xff08;https://lnmp.org&#xff09;本人在使用之后发现确实好用&#xff0c;能帮助我们快速搭建起lnmp、lamp和lnmpa的web生产环境&#xff0c;因此推荐大家可以多试试。但有的朋友可能需要使用openresty的lua扩展&#xff0c;这篇文章就会教你们怎么在军哥的…

RT-Thread 简介及架构

RT-Thread&#xff0c;全称是 Real Time-Thread&#xff0c;顾名思义&#xff0c;它是一个嵌入式实时多线程操作系统&#xff0c;基本属性之一是支持多任务&#xff0c;允许多个任务同时运行并不意味着处理器在同一时刻真地执行了多个任务。事实上&#xff0c;一个处理器核心在…

Linux中通过Socket文件描述符寻找连接状态介绍

针对下文的总结&#xff1a;socket是一种文件描述符 进程的打开文件描述符表 Linux的三个系统调用&#xff1a;open&#xff0c;socket&#xff0c;pipe 返回的都是一个描述符。不同的进程中&#xff0c;他们返回的描述符可以相同。那么&#xff0c;在同一个进程中&#xff0c;…

iOS HTML标签字符实体,转译字符串归类大全 【转载】

为什么要用转义字符串&#xff1f; HTML中<&#xff0c;>&#xff0c;&等有特殊含义&#xff08;<&#xff0c;>&#xff0c;用于链接签&#xff0c;&用于转义&#xff09;&#xff0c;不能直接使用。这些符号是不显示在我们最终看到的网页里的&#xff0c…

RT-Thread在github上的教程中图片显示不出来问题的解决方法

在github上查看RT-Thread STM32系列BSP制作教程时发现教程中所有的图片都加载不出来&#xff0c;非常影响教程的阅读使用。 使用记事本打开文件&#xff1a; C:\Windows\System32\drivers\etc\hosts 将如下内容复制粘贴到hosts文件末尾&#xff1a; # GitHub Start 140.82.11…

贝叶斯原理及其推断简介

1、贝叶斯公式及应用&#xff1a; 详见&#xff1a;链接ruanyifeng.com/blog/2011/08/bayesian_inference_part_one.html 转载于:https://www.cnblogs.com/1995hxt/p/6527604.html