递归神经网络RNN原理——Elman网络原理——结合实例MATLAB(BPTT算法)实现

最近正在看递归神经网络,看了网上很多博文,算是鱼龙混杂,并且基本都是使用Python实现,要不就是使用Matlab中的函数库newelm()等。对于使用Matlab的同学,甚为不方便。所以我将结合实例,使用matlab语言,完成Elman递归神经网络程序的编写(BPTT)。本人菜鸡一枚,如有错误还望各路大神,指正教导。另外,关于理论推导算法步骤,等我过几天有时间更新。
一、问题描述
问题描述
二、相关数据
相关数据
三、程序代码:`
Elman_BPTT_mian.m

  %%%使用BPTT算法完成Elman网络的训练
%%%作者:xd.wp
%%%时间:2016.10.06 16:44
%% 程序说明
%  1、数据为7天,四个时间点的空调功耗,用前三个推测第四个训练,依次类推。第七天作为检验
%  2Elman网络输入结点为12,输出结点为4个,隐藏结点18个
clear all;
clc;
%% 加载数据并进行归一化处理
[train_data,test_data]=Elman_data_process();

data_length=size(train_data,1);            %每个样本的长度
data_num=size(train_data,2);               %样本数目 
%% 网络参数初始化
%结点数目设置
input_layer_num=data_length;
hidden_layer_num=18;
output_layer_num=size(test_data,1);
%权重初始化
weight_input_hidden=rand(hidden_layer_num,input_layer_num)/1000;
weight_prehidden_hidden=rand(hidden_layer_num,hidden_layer_num)/1000;
weight_hidden_output=rand(output_layer_num,hidden_layer_num)/1000;
output_state=zeros(output_layer_num,3);
%% 网络训练学习部分  采用BPTT算法
yita=0.001;              %每次迭代的步进
for num=1:4000
for t=1:3       %%时间步,使用三推一
    %从输入到隐层
    if (t==1)
        pre_hidden_state=weight_input_hidden*train_data(:,t);
    else
       pre_hidden_state=weight_input_hidden*train_data(:,t)+weight_prehidden_hidden*hidden_state(:,t-1);
  • 27
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值