磐创AI
首发于磐创AI

TensorFlow RNN 教程和代码

分析:


看 TensorFlow 也有一段时间了,准备按照 GitHub 上的教程,敲出来,顺便整理一下思路。

博客:TensorFlow 安装,TensorFlow 教程,TensorFlowNews 原创人工智能,机器学习,深度学习,神经网络,计算机视觉,自然语言处理项目分享。

RNN部分


定义参数,包括数据相关,训练相关。

定义模型,损失函数,优化函数。

训练,准备数据,输入数据,输出结果。


代码:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Shared by http://www.tensorflownews.com/
# Github:https://github.com/TensorFlowNews

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib import rnn

mnist=input_data.read_data_sets("./data",one_hot=True)

training_rate=0.001
training_iters=100000
batch_size=128
display_step=10

n_input=28
n_steps=28
n_hidden=128
n_classes=10

x=tf.placeholder("float",[None,n_steps,n_input])
y=tf.placeholder("float",[None,n_classes])

weights={'out':tf.Variable(tf.random_normal([n_hidden,n_classes]))}
biases={'out':tf.Variable(tf.random_normal([n_classes]))}

def RNN(x,weights,biases):
	x=tf.unstack(x,n_steps,1)
	lstm_cell=rnn.BasicLSTMCell(n_hidden,forget_bias=1.0)
	outputs,states=rnn.static_rnn(lstm_cell,x,dtype=tf.float32)
	return tf.matmul(outputs[-1],weights['out'])+biases['out']

pred=RNN(x,weights,biases)
cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=pred,labels=y))
optimizer=tf.train.AdamOptimizer(learning_rate=training_rate).minimize(cost)

correct_pred=tf.equal(tf.argmax(pred,1),tf.argmax(y,1))
accuracy=tf.reduce_mean(tf.cast(correct_pred,tf.float32))

init=tf.global_variables_initializer()

with tf.Session() as sess:
	sess.run(init)
	step=1
	while step*batch_size<training_iters:
		batch_x,batch_y=mnist.train.next_batch(batch_size)
		batch_x=batch_x.reshape(batch_size,n_steps,n_input)
		sess.run(optimizer,feed_dict={x:batch_x,y:batch_y})
		if step%display_step==0:
			acc=sess.run(accuracy,feed_dict={x:batch_x,y:batch_y})
			loss = sess.run(cost, feed_dict={x: batch_x, y: batch_y})
			print("Iter " + str(step * batch_size) + ", Minibatch Loss= " + \
			      "{:.6f}".format(loss) + ", Training Accuracy= " + \
			      "{:.5f}".format(acc))
		step+=1

编辑于 2017-09-04

文章被以下专栏收录