标签: recurrent-neural-network

使用 Keras RNN 模型使用具有较少时间步长(不同维度)的数据进行预测

根据 RNN 的性质,我们可以在每个时间戳(按时间展开)得到预测概率的输出。

假设我用 5 个时间步长训练一个 RNN,每个时间步长有 6 个特征。因此,我必须像这样指定第一层(假设我们使用具有 20 个节点的 LSTM 层作为第一层):

model.add(LSTM(20, return_sequences=True, input_shape=(5, 6)))
Run Code Online (Sandbox Code Playgroud)

如果我输入相同的维度数据,模型运行良好。但是,现在我想使用数据的前 3 个时间步长来获得预测(输入形状将为 3、6),不接受相同的语法。

我的问题是,是否可以使用带有 keras 的相同模型进行此类预测(无需采用训练数据的前 3 个时间步长并训练另一个模型)?如果是,我应该如何处理语法?如果没有,是否还有其他带有 LSTM 的 RNN 包支持此类功能?

python machine-learning lstm keras recurrent-neural-network

5
推荐指数
0
解决办法
447
查看次数

Keras RNN 损失不会随着 epoch 减少

我使用 Keras 构建了一个 RNN。RNN 用于解决回归问题:

def RNN_keras(feat_num, timestep_num=100):
    model = Sequential()
    model.add(BatchNormalization(input_shape=(timestep_num, feat_num)))
    model.add(LSTM(input_shape=(timestep_num, feat_num), output_dim=512, activation='relu', return_sequences=True))
    model.add(BatchNormalization())  
    model.add(LSTM(output_dim=128, activation='relu', return_sequences=True))
    model.add(BatchNormalization())
    model.add(TimeDistributed(Dense(output_dim=1, activation='relu'))) # sequence labeling

    rmsprop = RMSprop(lr=0.00001, rho=0.9, epsilon=1e-08)
    model.compile(loss='mean_squared_error',
                  optimizer=rmsprop,
                  metrics=['mean_squared_error'])
    return model
Run Code Online (Sandbox Code Playgroud)

整个过程看起来不错。但是损失在各个时期内保持完全相同。

61267 in the training set
6808 in the test set

Building training input vectors ...
888 unique feature names
The length of each vector will be 888
Using TensorFlow backend.

Build model...

# Each batch has 1280 examples
# The training …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network deep-learning keras recurrent-neural-network

5
推荐指数
1
解决办法
1万
查看次数

用于序列二元分类的 RNN

我想知道是否有人可以推荐一个好的库或参考资料(教程或文章)来实现循环神经网络(RNN)。

我尝试使用Alex Graves的rnnlib,但在更改架构以适应网络以满足我的需求时遇到了一些麻烦。

特别是,我正在尝试使用正样本和负样本来识别来自常规语言的字符串。

这是我的训练集的一个例子:

str1: w1 w2 ... wn --> 标签 1(它是该语言的有效字符串)

str2: w1 w2 ... wi --> 标签0(不属于该语言)

其中 wi 是从未知语言的字母表中提取的。

提前致谢。

regular-language text-classification deep-learning recurrent-neural-network

5
推荐指数
1
解决办法
7784
查看次数

RNN 的可变长度序列输入的分桶

假设一个循环神经网络以可变长度的文本序列作为输入。为了提高效率,人们可以将长度相似的序列批处理在一起,以最小化每批的填充量——称为桶化。这如何在 Keras 中实现?

作为参考,使用遗留操作Tensorflow Seq2Seq 教程包含此内容,但其代码应该能够在 Keras 中以更少的代码行进行简化。

python lstm keras tensorflow recurrent-neural-network

5
推荐指数
0
解决办法
853
查看次数

Tensorflow:联合训练CNN + LSTM

关于如何在 TF 中单独使用 LSTM 的例子有很多,但我找不到任何关于如何联合训练 CNN + LSTM 的好例子。就我所见,如何进行此类培训并不是很简单,我可以在这里想到一些选择:

  • 首先,我认为最简单的解决方案(或最原始的解决方案)是独立训练 CNN 来学习特征,然后在不更新 CNN 部分的情况下在 CNN 特征上训练 LSTM,因为人们可能必须在 numpy 中提取和保存这些特征然后将它们馈送到 TF 中的 LSTM。但在那种情况下,人们可能不得不使用不同标记的数据集来进行 CNN 的预训练,这消除了端到端训练的优势,即学习 LSTM 目标的最终目标的特征(除了必须拥有这些首先是附加标签)。
  • 第二种选择是连接批量维度(4-d Tensor)中的所有时间片,将其提供给 CNN,然后以某种方式将这些特征重新打包为训练 LSTM 所需的 5-d Tensor,然后应用成本函数。我主要关心的是,是否有可能做这样的事情。此外,处理可变长度序列变得有点棘手。例如,在预测场景中,您一次只能提供单帧。因此,如果这是进行联合训练的正确方式,我会很高兴看到一些示例。除此之外,这个解决方案看起来更像是一个黑客,因此,如果有更好的方法,如果有人可以分享它会很棒。

先感谢您 !

convolution deep-learning lstm tensorflow recurrent-neural-network

5
推荐指数
1
解决办法
4435
查看次数

在 Keras 中使用卷积神经网络后使用 LSTM 时的维度错误

在 keras 1.2.2 中,我制作了一个具有以下维度的数据集:

X_train: (2000, 100, 32, 32, 3) 
y_train: (2000,1)
Run Code Online (Sandbox Code Playgroud)

这里,2000 是实例数(数据的批次),100 是每批中的样本数,32 是图像行和列数,3 是通道数(RGB)。

我写了这段代码,它在 CNN 之后应用了 LSTM,但是,我收到了这个错误:

ValueError: Input 0 is incompatible with layer lstm_layer: expected ndim=3, found ndim=2

这是我的代码:

import keras
from keras.layers import Input ,Dense, Dropout, Activation, LSTM
from keras.layers import Convolution2D, MaxPooling2D, Flatten, Reshape
from keras.models import Sequential
from keras.layers.wrappers import TimeDistributed
from keras.layers.pooling import GlobalAveragePooling1D
from keras.optimizers import SGD
from keras.utils import np_utils
from keras.models import Model


import numpy as np

timesteps=100; …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network lstm keras recurrent-neural-network

5
推荐指数
1
解决办法
661
查看次数

使用 LSTM/RNN 使用外生变量进行时间序列预测

我想在连续变量(Y1,Y2,Y3)和分类变量(Y4,Y5)的基础上对连续变量(Y1)进行时间序列预测。有没有办法使用 LSTM/RNN 来做到这一点?

lstm tensorflow recurrent-neural-network

5
推荐指数
0
解决办法
1991
查看次数

如何在代码中使用 PyTorch PackedSequence?

有人可以提供完整的工作代码(不是片段,而是在可变长度循环神经网络上运行的代码),说明您将如何使用 PyTorch 中的 PackedSequence 方法?

文档、github 或 Internet 中似乎没有任何此类示例。

https://github.com/pytorch/pytorch/releases/tag/v0.1.10

machine-learning torch recurrent-neural-network pytorch

5
推荐指数
1
解决办法
3096
查看次数

用于 RNN 的 Keras get_weight 解释

当我使用 Keras 运行此代码时:

networkDrive = Input(batch_shape=(1,length,1))
network = SimpleRNN(3, activation='tanh', stateful=False, return_sequences=True)(networkDrive)

generatorNetwork = Model(networkDrive, network)

predictions = generatorNetwork.predict(noInput, batch_size=length)


print(np.array(generatorNetwork.layers[1].get_weights()))
Run Code Online (Sandbox Code Playgroud)

我得到这个输出

[array([[ 0.91814435,  0.2490257 ,  1.09242284]], dtype=float32)
 array([[-0.42028981,  0.68996912, -0.58932084],
       [-0.88647962, -0.17359462,  0.42897415],
       [ 0.19367599,  0.70271438,  0.68460363]], dtype=float32)
 array([ 0.,  0.,  0.], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)

我想,(3,3) 矩阵是权重矩阵,将 RNN 单元相互连接起来,两个数组之一可能是偏差但第三个是什么?

neural-network keras recurrent-neural-network rnn

5
推荐指数
1
解决办法
869
查看次数

LSTM 单元如何映射到层?

我无法准确理解 LSTM 单元的范围——它如何映射到网络层。来自格雷夫斯 (2014):

在我看来,在单层网络中,layer = lstm 单元。这实际上如何在多层 rnn 中工作?

三层RNN 三层循环神经网络

LSTM单元 LSTM单元

单元格的输出是h_t,没有表示特定层的超级索引。等式也是一样。每个单元格是否跨越单个层?或者每个单元格是否在每个时间步跨越整个三个节点?

lstm recurrent-neural-network

5
推荐指数
1
解决办法
1898
查看次数