精华内容
下载资源
问答
  • InceptionV3-多层GRU(Keras和TensorFlow) 要求: Python 3.6 TensorFlow 1.13.1(安装tensorflow-1.13.1-cp36-cp36m-win_amd64.whl) 凯拉斯2.2.4 Joblib 1.0.1 Matplotlib 3.3.4 Open CV 4.5.1 熊猫1.1.5 ...
  • 使用thano重构多层GRU神经网络 已知我最近每月学习机器学习的练习。
  • GRU输入输出矩阵设定

    2021-02-08 14:46:40
    这些时在用tensorFlow中的GRU做一些试验时发现: 假定训练集为10000个点,每个点为2000个数据,那么输入要求为(10000,2000,1)...没有问题,但如果想要调用多层GRU。每层都写成以上形式就会报错。 ValueError: Input

    这些时在用tensorFlow中的GRU做一些试验时发现:

    假定训练集为10000个点,每个点为2000个数据,那么输入要求为(10000,2000,1)的数据和(10000,)的标签。

    如果只有一层GRU直接调用

    tf.keras.layers.GRU(512, activation='tanh', recurrent_activation='sigmoid', use_bias=True)

    没有问题,但如果想要调用多层GRU。每层都写成以上形式就会报错。

    ValueError: Input 0 of layer gru_1 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 512]

    看一下GRU的手册

    tf.keras.layers.GRU(
        units,
        activation="tanh",
        recurrent_activation="sigmoid",
        use_bias=True,
        kernel_initializer="glorot_uniform",
        recurrent_initializer="orthogonal",
        bias_initializer="zeros",
        kernel_regularizer=None,
        recurrent_regularizer=None,
        bias_regularizer=None,
        activity_regularizer=None,
        kernel_constraint=None,
        recurrent_constraint=None,
        bias_constraint=None,
        dropout=0.0,
        recurrent_dropout=0.0,
        return_sequences=False,
        return_state=False,
        go_backwards=False,
        stateful=False,
        unroll=False,
        time_major=False,
        reset_after=True,
        **kwargs
    )

    GRU对于输出有一个选项:

    return_sequences=False,

    GRU的默认是False,导致GRU不能多层使用。上面报错中的gru_1实际上指的是第二层GRU。

    为了能使用多层GRU,于是,需要在使用GRU时把上面的代码改为

    tf.keras.layers.GRU(512, activation='tanh', recurrent_activation='sigmoid', use_bias=True, return_sequences=True)

    虽然这样就可以使用多层GRU,但是会发现:如果在训练后要继续使用pred方法,pred的输出不是想要的(xxx,)而是(xxx,1)。

    综上所述:如果要使用多层GRU,那么除最后一层的其它所有层使用

    tf.keras.layers.GRU(512, activation='tanh', recurrent_activation='sigmoid', use_bias=True, return_sequences=True)

    最后一层使用

    tf.keras.layers.GRU(512, activation='tanh', recurrent_activation='sigmoid', use_bias=True)

    即最后一层用return_sequences=False,其它层用return_sequences=True。

    展开全文
  • RNN、LSTM、GRU多层LSTM、Bi-LSTM

    千次阅读 2020-03-16 21:35:58
    有些时候,主要考虑的是哪些输入,有时候,考虑的是(输入,输出)之间的模型; 一、RNN f,g 就是普通的激活函数,可能是tanh;...多层RNN中,第一层的输入是Ht1~ (Xt, Ht-1),后面层的输入不再...

    有些时候,主要考虑的是哪些输入,有时候,考虑的是(输入,输出)之间的模型;

    一、RNN

    f,g 就是普通的激活函数,可能是tanh;

    二、LSTM

    人人é½è½çæçLSTM

      此时,Ht~f(Xt, Ct-1, ht-1)

    在这里引入了一个新的变量Ct-1,它是什么意思呢?

    这里的f如何确定呢

    GRU

    Rt*H(t-1):可以重置之前的信息,在Rt=0的矩阵位置进行丢弃,Rt=1的位置进行保留;

    三、多层RNN/LSTM

    多层RNN中,第一层的输入是Ht1 ~ (Xt, Ht-1),后面层的输入不再是Xt,而是下一层的隐藏层输出。也就是说,第1个神经元输出后有两个去处,一个是传递到当前时刻的下一个RNN/LSTM神经元作为输入,另一个是传回给下一个时刻的自己,作为ht+1(1); Ct(1)则只传回给下一个时刻的自己,作为Ct+1(1)

    四、Bi-RNN(双向RNN)

    因为时刻t的输出,不仅取决于之前时刻的信息,还取决于未来的时刻,所以有了双向RNN。比如要预测一句话中间丢失的一个单词,有时只看上文是不行的,需要查看上下文。双向RNN很简单,就是两个互相叠加的RNN。下图为双向RNN的结构图。

    每个时刻有一个输入,隐藏层有两个节点(向量),一个st进行正向计算,另一个St'进行反向计算,输出层由这两个值决定。

    计算公式:

    从式子中可以看出,正向计算和反向计算的权重不共享,即一个单层的双向RNN一共有6个权重矩阵:正向UVW,反向U' V' W';三个权重向量:b b' c。

    五、Bi-LSTM+attention机制 + 文本分类

    attention,注意力机制,就想我们人类对某些重要信息更加看重一样,Attention可以对信息进行权重的分配,最后进行带权求和。因此Attention方法可解释性强,效果更好,候选也出现了各种形式的attention操作。

    文本分类中的Attention结构

    Attention公式:

    整体网络结构:

    假设一个RNN的time_step确定为L,则output:每个time_step都可以输出当前时序t的隐状态hi(t);但整体RNN的输出oi(t)是在最后一个time_step = L时获取,才是完整的最终结果;

    我们可以将output根据分类任务或者回归任务的不同,分别进一步处理。比如,传给cross_entropy&softmax进行分类....... 或者获取每个time_step对应的隐状态hi(t),做seq2seq网络等。

     

     

    展开全文
  • GRU/双向RNN/多层RNN速度复习

    千次阅读 2019-03-06 07:59:55
    有更新门与重置门,两个门的门控都由本轮输入与上一轮h输出确定 更新门决定有多少输入h(cell),重置门决定上一轮h输出有多少

    有更新门与重置门,两个门的门控都由本轮输入与上一轮h输出确定
    更新门决定有多少输入h(cell),重置门决定上一轮h输出有多少

    展开全文
  • 文章目录回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出GRU基本介绍GRU数据下载GRU模型设计建模步骤结构设计GRU程序设计单层GRU设计多层GRU设计参考资料致谢 GRU基本介绍 GRU神经网络是LSTM神经网络的一种...

    回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出

    GRU基本介绍

    GRU神经网络是LSTM神经网络的一种变体,LSTM 神经网
    络是在RNN的基础上发展起来的。RNN是一种成熟的机器学习方法,在处理时序数列方面具有着很大优势。RNN中包含信号反馈结构,能将t时刻的输出信息与t时刻之前的信息相关联,具有动态特征和记忆功能。

    • RNN结构包括输入层、隐藏层和输出层,其中隐藏层包含反馈结构;
    • t时刻的输出值是该时刻及其之前时刻的输入信息共同作用的结果;
    • RNN能够有效地分析和处理较短的时序数列,但不能分析和处理维
      度过长的时序数列,否则会产生“梯度消失”或“梯度爆炸”的现象。
    • 针对这一问题,H等提出了一种RNN改进结构LSTM神经网络,其隐藏层结构如图示。
      1
    • LSTM神经网络基于隐藏层中的记忆单元(遗忘门、输入门和输出门)实现时序上的记忆可控,改善了RNN长期记忆力不足的问题,但其隐藏层的结构过于复杂,样本训练需要花费大量的时间。
      2
    • 基于LSTM神经网络,cho等提出了GRU神经网络,利用重置门和更新门代替LSTM神经网络中的遗忘门、输入门和输出门。LSTM神经网络和GRU神经网络在隐藏层内具有相似的数据流,但GRU神经网络中没有单独的存储单元,因此样本训练效率更高。
    • GRU神经网络的隐藏层结构示意图。由图可见:更新门控制前一时刻的信息对当前时刻的影响程度,更新门的值越大,前一时刻的信息对当
      前时刻的影响越小;重置门控制对前一时刻信息的接收百分比,重置门的值越大,对前一时刻的信息接收的越多。
      3

    GRU数据下载

    GRU模型设计

    建模步骤

    GRU神经网络的训练方法基于反向传播理论,
    主要包括四个步骤。

    • 前向计算每个神经元的输出值。
    • 反向计算每个神经元的误差项。GRU神经网络误差项的反向传播包括两个方面:一个是沿时间的反向传播,即从当前时刻起,计算每个时刻的误差项;另一个是将误差项传递到上一层。
    • 根据误差项,利用优化算法计算相应的权重梯度。
    • 利用得到的梯度更新权重。

    结构设计

    GRU神经网络的预测流程。由图可见,包括输入层、隐藏层和输出层,输入层对参数进行异常值处理和归一化处理,并将处理后数据输入到隐藏层。归一化是为了限定输入数据的最大值和最小值不超过隐藏层函数和输出层函数的限定范围。

    4

    GRU程序设计

    环境准备,清理工作区间及命令窗口

    clc;clear;
    warning off;
    

    单层GRU设计

    input =data(:,1:4)';
    output=data(:,5)';
    nwhole =size(data,1);
    train_ratio=0.9;
    ntrain=round(nwhole*train_ratio);
    ntest =nwhole-ntrain;
    input_train =input(:,1:ntrain);
    output_train=output(:,1:ntrain);
    input_test =input(:, ntrain+1:ntrain+ntest);
    output_test=output(:,ntrain+1:ntrain+ntest);
    [inputn_train,inputps]  =mapminmax(input_train);
    [outputn_train,outputps]=mapminmax(output_train);
    inputn_test =mapminmax('apply',input_test,inputps); 
    outputn_test=mapminmax('apply',output_test,outputps); 
    %数据输入x的特征维度
    inputSize  = size(inputn_train,1);   
    %数据输出y的维度  
    outputSize = size(outputn_train,1);  
    %可以增加对照实验确定
    numhidden_units=180;
    %GRU层参数设置
    %输入层设置 sequenceInputLayer
    %学习层设置 gruLayer
    %全连接层设置 fullyConnectedLayer
    %epoch后学习率更新
    %% gru
    layers = [ ...
        sequenceInputLayer(inputSize)                
        gruLayer(numhidden_units) 
        dropoutLayer(0.2)
        fullyConnectedLayer(outputSize)              
        regressionLayer('name','out')];
    %% trainoption(lstm)
    opts = trainingOptions('adam', ...
        'MaxEpochs',200, ...
        'GradientThreshold',1,...
        'ExecutionEnvironment','cpu',...
        'InitialLearnRate',0.005, ...
        'LearnRateSchedule','piecewise', ...
        'LearnRateDropPeriod',100, ...                
        'LearnRateDropFactor',0.8, ...
        'Verbose',0, ...
        'Plots','training-progress'... 
        );
    tic
    GRUnet = trainNetwork(inputn_train ,outputn_train ,layers,opts);
    toc;
    [GRUnet,GRUoutputr_train]= predictAndUpdateState(GRUnet,inputn_train);
    GRUoutput_train = mapminmax('reverse',GRUoutputr_train,outputps);
    %网络测试输出
    [GRUnet,GRUoutputr_test] = predictAndUpdateState(GRUnet,inputn_test);
    %网络输出反归一化
    GRUoutput_test= mapminmax('reverse',GRUoutputr_test,outputps);
    error_test=GRUoutput_test'-output_test';
    pererror_test=error_test./output_test';
    error=error_test';
    pererror=pererror_test';
    avererror=sum(abs(error))/(ntest);
    averpererror=sum(abs(pererror))/(ntest);
    RMSE = sqrt(mean((error).^2));
    disp('GRU网络预测绝对平均误差MAE');
    disp(avererror);
    disp('GRU网络预测平均绝对误差百分比MAPE');
    disp(averpererror)
    disp('GRU网络预测均方根误差RMSE')
    disp(RMSE)
    %数据可视化分析
    %测试数据
    figure()
    plot(LSTMoutput_test,'r:.')     
    hold on
    plot(output_test,'k--')           
    legend( '预测测试数据','实际分析数据','Location','NorthWest','FontName','宋体');
    title('LSTM网络模型结果及真实值','fontsize',12,'FontName','宋体')
    xlabel('样本','fontsize',12,'FontName','宋体');
    ylabel('数值','fontsize',12,'FontName','宋体');
    %-------------------------------------------------------------------------------------
    figure()
    stairs(pererror_test,'-.','Color',[255 50 0]./255,'linewidth',0.7)        
    legend('LSTM网络测试相对误差','Location','NorthEast','FontName','宋体')
    title('LSTM网络预测相对误差','fontsize',12,'FontName','宋体')
    ylabel('误差','fontsize',12,'FontName','宋体')
    xlabel('样本','fontsize',12,'FontName','宋体')
    %-----------------------------------------------------------------------------------
    
    

    5
    6

    多层GRU设计

    多层GRU设计的原理就是程序中设计多个gruLayer,注意设置一些权重参数。

    numHiddenUnits1 = 125;
    numHiddenUnits2 = 100;
    layers = [ ...
        sequenceInputLayer(4)
        gruLayer(numHiddenUnits1,'OutputMode','sequence')
        dropoutLayer(0.2)
        gruLayer(numHiddenUnits2,'OutputMode','last')
        dropoutLayer(0.2)
        fullyConnectedLayer(1)
        regressionLayer];
    对于序列到序列回归网络,最后一个 GRU层的输出模式必须是“序列”。
    numFeatures = 12;
    numHiddenUnits1 = 125;
    numHiddenUnits2 = 100;
    layers = [ ...
        sequenceInputLayer(numFeatures)
        gruLayer(numHiddenUnits1,'OutputMode','sequence')
        dropoutLayer(0.2)
        gruLayer(numHiddenUnits2,'OutputMode','sequence')
        dropoutLayer(0.2)
        fullyConnectedLayer(numClasses)
        regressionLayer];
    ————————————————
    版权声明:本文为CSDN博主「机器学习之心」的原创文章
    
    

    参考资料

    [1] https://blog.csdn.net/kjm13182345320?spm=1010.2135.3001.5343&type=blog
    [2] https://blog.csdn.net/kjm13182345320/article/details/118858103?spm=1001.2014.3001.5502
    [3] https://blog.csdn.net/kjm13182345320/article/details/118611326?spm=1001.2014.3001.5501
    [4] https://blog.csdn.net/kjm13182345320/article/details/118494536?spm=1001.2014.3001.5502

    致谢

    • 感谢大家订阅,感谢!
    • 欢迎一起学习,一起进步!
    • 本文为CSDN博主「机器学习之心」的原创文章。
    展开全文
  • GRU网络简介

    2021-03-22 22:52:18
    GRU网络 一:GRU简介 ​ GRU玩咯是对LSTM网络的简化,GRU使记忆体ht融合了长期记忆和短期记忆,ht包含了过去信息ht-1和现在信息h`t,现在信息是过去信息ht-1过重置门与当前输入共同决定,两个门限的取值范围也是0到1...
  • 就像LSTM一样,GRU也能够保持长期记忆(想象一下把update gate设置成0,则以前的信息全部被保留了) 3.3 LSTM vs GRU LSTM和GRU并没有明显的准确率上的区别 GRU比起LSTM来,参数更少,运算更快,仅此而已。...
  • 5.4 GRU模型

    2020-05-17 21:38:13
    4 GRU模型 学习目标: 了解GRU内部结构及计算公式. 掌握Pytorch中GRU工具的使用. 了解GRU的优势与缺点. GRU(Gated Recurrent Unit)也称门控循环单元结构, 它也是传统RNN的变体, 同...
  • 用于从字符级语言模型进行训练/采样的多层循环神经网络(RNN、LSTM 和 GRU)。 输入是单个文本文件,模型学习预测序列中的下一个字符。 更多信息在这里和这里。 由 ( ) 创建。 char-rnn-API char-rnn 的 API 和 Web...
  • Peephole LSTM、GRU 实战

    2020-09-22 11:57:20
    前面我们讲过了 LSTM 的两个变体 Peephole LSTM 和 GRU 的模型原理,在这一节中我们会将这些模型应用起来,分别用它们来做一个文本生成的任务,并对比不同方案的效果。 我们先通过 TF1 构建 LSTM、Peephole、GRU ...
  • 重温LSTM和GRU

    千次阅读 2020-05-25 13:33:53
    所以这次借着这个机会又把RNN, GRU, LSTM以及Attention的一些东西复习了一遍,真的是每一遍学习都会有新的收获,之前学习过也没有整理, 所以这次也借着这个机会把这一块的基础内容进行一个整理和总结, 顺便了解...
  • NLP-GRU

    2021-07-15 17:27:27
    为了解决RNN梯度消失的问题,一个常用的方法是使用GRU(门控循环单元)。 传统的循环单元 门控循环单元 即在循环单元中增加一个类似于门一样的控制变量,来控制当前单元是否被记住,以便后面的单元进行使用...
  • 从RNN到LSTM再到GRU

    千次阅读 多人点赞 2021-03-04 09:20:36
    本文主要介绍了RNN、LSTM和GRU相关公式以及区别。
  • Gated Recurrent Unit(GRU

    千次阅读 2019-02-24 22:40:30
    Gated Recurrent Unit(GRU) 在上一篇博客里介绍了LSTM(Long Short-Term Memory),博客地址:LSTM(Long Short-Term Memory)。LSTM相比较最基本的RNN,在NLP的很多应用场景下都表现出了很好的性能,至今依然很...
  • 创建GRU也有两种方法:GRU和RNN+GRUCell GRU import tensorflow as tf import numpy as np from tensorflow import keras import os import matplotlib.pyplot as plt os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1' ...
  • LSTM和GRU网络的高级运用实例

    千次阅读 2018-09-18 16:58:12
    这回我们使用反复性神经网络,因为这样的网络能够利用数据间存在的时间联系来分析数据潜在规律进而提升预测的准确性,这次我们使用的反复性网络叫GRU,它是LSTM的变种,两者基本原理一样,只不过前者是对后者的优化...
  • DL之LSTM:LSTM算法论文简介(原理、关键步骤、RNN/LSTM/GRU比较、单层和多层的LSTM)、案例应用之详细攻略 目录 LSTM算法简介 1、LSTM算法论文 1.1、LSTM算法相关论文 1.2、LSTM (长短期记忆网络) 2、LSTM建立过程...
  • RNN-LSTM-GRU

    千次阅读 2018-09-06 22:28:37
    循环神经网络(Recurrent Neural Network, RNN) 假设 Xt∈Rn×dXt∈Rn×d{X}_t \in \mathbb{R}^{n \times d} 是序列中时间步 t 的小批量输入 Ht...跟多层感知机不同在于这里我们保存上一时间步的隐藏变量 Ht−1H...
  • RNN LSTM GRU 讲解

    2021-01-25 17:26:18
    因为我写的内容主要在时序、时空预测这个方向,所以主要还是把rnn,lstm,gru,convlstm,convgru以及ST-LSTM 一、 RNN 最为原始的循环神经网络,本质就是全连接网络,只是为了考虑过去的信息,输出不仅取决于...
  • tensorflow 中LSTM和GRU模块使用1.1 LSTMCell1.2 LSTM1.2 LSTM使用示例1.2.1区别 cell state 和 hidden state1.2.2小结1.2.3多层LSTM1.3 GRU的使用示例1.4 双向LSTM1.4 LSTM参数个数计算1.5 GRU参数个数计算1.5 ...
  • 多层RNN3.SimpleRNN—高级封装五、LSTM案例—情感分类实战1.LSTMCell2.LSTM—高级封装六、GRU案例—情感分类实战1.GRUCell2.GRU 一、时间序列数据的表示方法     循环神经网络RNN是对具有时间先后顺序的数据做...
  • Pytorch 学习(8):Recurrent layers (循环层)实现之GRUCell GRU是Gated Recurrent Unit,GRU是LSTM的一个变化形式。先看一个GRUCell的小例子 rnn = nn.GRUCell(10, 20) input = Variable(torch.randn(6, 3, 10)...
  • RNN隐藏层的两种计算方法GRU和LSTM

    千次阅读 2018-05-11 17:05:38
    本篇文章主要介绍两种RNN的隐藏层信息计算方法GRU(Gated Recurrent Units)和LSTM(Long-Short-Term-Memories),这两种隐藏层的计算方法通过引入门(Gate) 的机制来解决RNN的梯度消失问题,从而学习到长距离依赖...
  • Attention-GRU-3M-源码

    2021-05-16 19:33:34
    注意-GRU-3M 论文“具有自适应Attention-GRU模型的品牌级排名系统[C]”的代码。 (接受IJCAI 2018) 运行命令:python train.py --buckets“ ./data/” --checkpointDir ./log/ --exp debug --m1 1 --m2 0 --m3 1 ...
  • 多层RNN

    2019-10-07 14:49:50
    多层双向GRU 参考:博客 RNN在使用过程中会出现梯度爆炸 (exploding gradients) 和梯度消失 (vanishing gradients) 两种问题: 梯度爆炸 这个问题通常出现在深度神经网络中 (多层网络),当使用梯度回传时,梯度可能...
  • LSTM和GRU介绍

    2020-09-28 21:36:56
    从而引出其解决方案LSTM和GRU LSTM和GRU的短期记忆的解决方案,它通过门控(Gates)机制调节信息的流向。Gates可以学习到序列数据中哪些信息是重要的,需要保留;哪些信息是不重要的,可以丢弃,从而解决长序列的信息...
  • TensorFlow2.0之GRU情感分析实战
  • 人人都能看懂GRU

    2020-08-13 09:48:58
    首发于深度学习234写文章人人都能看懂的GRU陈诚1,083 人赞同了该文章接续上一次介绍的LSTM ,这里我又很不要脸地使用“人人都能看懂的xxx”来作为标题,来将对GRU进行介绍。同样这里的内容是对台大李宏毅老师课程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,807
精华内容 1,522
关键字:

多层gru