TensorFlow系列专题(八):七步带你实现RNN循环神经网络小示例

本文通过TensorFlow实现简单的RNN模型,用于解决二进制序列预测问题。介绍了数据生成策略,RNN结构及训练过程,通过交叉熵损失函数评估模型性能。并展示了训练过程中损失(loss)的变化曲线。
摘要由CSDN通过智能技术生成

欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习、深度学习的知识!

【前言】:在前面的内容里,我们已经学习了循环神经网络的基本结构和运算过程,这一小节里,我们将用TensorFlow实现简单的RNN,并且用来解决时序数据的预测问题,看一看RNN究竟能达到什么样的效果,具体又是如何实现的。

在这个演示项目里,我们使用随机生成的方式生成一个数据集(由0和1组成的二进制序列),然后人为的增加一些数据间的关系。最后我们把这个数据集放进RNN里,让RNN去学习其中的关系,实现二进制序列的预测1。数据生成的方式如下:

循环生成规模为五十万的数据集,每次产生的数据为0或1的概率均为0.5。如果连续生成了两个1(或两个0)的话,则下一个数据强制为0(或1)。

 

1.我们首先导入需要的Python模块:

1	#!/usr/bin/python
2	# -*- coding: UTF-8 -*-
3	import numpy as np
4	import tensorflow as tf
5	import matplotlib.pyplot as plt
6	from tensorflow.contrib import rnn
  1. 定义一个Data类,用来产生数据:
1	class Data:
2	    def __init__(self, data_size, num_batch, batch_size, time_step):
3	        self.data_size = data_size      # 数据集的大小
4	        self.batch_size = batch_size    # 一个batch的大小
5	        self.num_batch = num_batch   # batch的数目(num_batch=data_size//batch_size)
6	        self.time_step = time_step     # RNN的时间步
7	        self.data_without_rel = []      # 保存随机生成的数据,数据间没有联系
8	        self.data_with_rel = []         # 保存有时序关系的数据
  1. 在构造方法“init”中,我们初始化了数据集的大小“data_size”、一个batch的大小“batch_size”、一个epoch中的batch数目“num_batch”以及RNN的时间步“time_step”。接下来我们定义一个“generate_data”方法:
9	def generate_data(self):
10	    # 随机生成数据
11	    self.data_without_rel = np.array(np.random.choice(2, size&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值