TensorFlow循环神经网络样例——预测 sin 函数

RNN 具有时序信息记忆能力,参考前向时间内的信息进行后向预测。 RNN 模型的提出也是为了解决时序预测问题。样例以 sin() 函数预测为例,音频信号等一维时序电子信号处理方式同理。

# -*- coding: utf-8 -*-
"""
@ File:   rnn_example_sin_predict.py
@ Brief:  循环神经网络样例程序——预测 sin 函数
@ Env:    python 3.5 + TensorFlow 1.4.0, win10 + pycharm
@ Author: 攀援的井蛙
@ Date:   2020-09-13
"""

import  numpy as np
import tensorflow as tf

# 加载 matplotlib 工具包,使用该工具可以对预测的 sin 函数曲线进行绘图
import matplotlib as mpl
mpl.use('TkAgg')
from matplotlib import pyplot as plt



HIDDEN_SIZE = 30                # LSTM 中隐藏的节点个数
NUM_LAYERS = 2                  # LSTM 的层数

TIMESTEPS = 10                  # 循环神经网络中的训练序列长度
TRAINING_STEPS = 10000          # 训练轮数
BATCH_SIZE = 32                 # batch 大小

TRAINING_EXAMPLES = 10000       # 训练数据个数
TESTING_EXAMPLES = 1000         # 测试数据个数
SAMPLE_GAP = 0.01               # 采样间隔



"""
@ brief: 生成数据序列
@ return: x,y数据序列(时序序列、值序列)
@ param seq: 
"""
def generate_data(seq):
    X = []
    y = []
    # 序列的第 i 项和后面的 TIMESTEPS-1 项合在一起作为输入;第 i+TIMIESTEPS 项作为输出。
    # 即用 sin 函数前面的 TIMESTEPS 个点的信息,预测第 i+TIMESTEPS 个点的函数值。
    for i in range(len(seq) - TIMESTEPS):
        X.append([seq[i: i + TIMESTEPS]])
        y.append([seq[i + TIMESTEPS]])
    return np.array(X, dtype=np.float32), np.array(y, dtype=np.float32)



"""
@ brief: LSTM 模型实现函数
@ return: 预测时返回预测结果;训练时返回预测结果、损失函数、模型优化器
@ param X: 时序序列
@ param y: 值序列
@ param is_training: 是否是训练过程
"""
def lstm_model(X, y, is_training):
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值