标签: recurrent-neural-network

Keras中具有批量归一化的双向LSTM

我想知道如何在Keras中实现具有批量标准化(BN)的biLSTM.我知道BN层应该在线性和非线性之间,即激活.使用CNN或Dense图层很容易实现.但是,如何用biLSTM做到这一点?

提前致谢.

python lstm keras recurrent-neural-network keras-layer

9
推荐指数
1
解决办法
5838
查看次数

LSTM遵循均值池

我正在使用Keras 1.0.我的问题与此问题相同(如何在Keras中实现Mean Pooling层),但对我来说这里的答案似乎不够.

我想实现这个网络: 在此输入图像描述

以下代码不起作用:

sequence = Input(shape=(max_sent_len,), dtype='int32')
embedded = Embedding(vocab_size, word_embedding_size)(sequence)
lstm = LSTM(hidden_state_size, activation='sigmoid', inner_activation='hard_sigmoid', return_sequences=True)(embedded)
pool = AveragePooling1D()(lstm)
output = Dense(1, activation='sigmoid')(pool)
Run Code Online (Sandbox Code Playgroud)

如果我没有设置return_sequences=True,我打电话时会收到此错误AveragePooling1D():

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/PATH/keras/engine/topology.py", line 462, in __call__
    self.assert_input_compatibility(x)
  File "/PATH/keras/engine/topology.py", line 382, in assert_input_compatibility
    str(K.ndim(x)))
Exception: ('Input 0 is incompatible with layer averagepooling1d_6: expected ndim=3', ' found ndim=2')
Run Code Online (Sandbox Code Playgroud)

否则,我打电话时会收到此错误Dense():

Traceback (most recent call last):
  File …
Run Code Online (Sandbox Code Playgroud)

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

8
推荐指数
2
解决办法
6767
查看次数

Tensorflow动态RNN(LSTM):如何格式化输入?

我收到了一些这种格式的数据和以下细节:

person1, day1, feature1, feature2, ..., featureN, label
person1, day2, feature1, feature2, ..., featureN, label
...
person1, dayN, feature1, feature2, ..., featureN, label
person2, day1, feature1, feature2, ..., featureN, label
person2, day2, feature1, feature2, ..., featureN, label
...
person2, dayN, feature1, feature2, ..., featureN, label
...
Run Code Online (Sandbox Code Playgroud)
  • 总是有相同数量的功能,但每个功能可能是0表示什么都没有
  • 每个人都有不同的天数,例如,person1有20天的数据,person2有50天

目标是预测第二天的人的标签,因此dayN + 1的标签,无论是基于每个人还是整体(每个人对我更有意义).我可以自由地重新格式化数据(它不是很大).基于上面的一些阅读之后,我认为动态RNN(LSTM)可能效果最好:

  • 反复神经网络:因为第二天依赖于前一天
  • lstm:因为模型每天都会建立起来
  • 动态:因为并非每天都有所有功能

如果对我的数据没有意义,请在这里阻止我.问题是:

如何为tensorflow/tflearn提供/格式化这些数据?

我使用tflearn 查看了这个例子,但是我不理解它的输入格式,所以我可以"镜像"它到我的.同样地,在一个非常相似的问题上找到了这篇文章,但看起来海报所拥有的样本彼此之间没有相关性,因为它们在我的中.我对tensorflow的体验仅限于其入门页面.

python lstm tensorflow recurrent-neural-network tflearn

8
推荐指数
1
解决办法
9449
查看次数

Keras SimpleRNN 的参数数量

我有一个SimpleRNN喜欢:

model.add(SimpleRNN(10, input_shape=(3, 1)))
model.add(Dense(1, activation="linear"))
Run Code Online (Sandbox Code Playgroud)

模型摘要说:

simple_rnn_1 (SimpleRNN)   (None, 10)   120       
Run Code Online (Sandbox Code Playgroud)

我很好奇的参数个数120simple_rnn_1

有人能回答我的问题吗?

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

8
推荐指数
2
解决办法
3843
查看次数

我们如何在 Keras 中定义一对一、一对多、多对一和多对多 LSTM 神经网络?

我正在阅读这篇文章(The Unreasonable Effectiveness of Recurrent Neural Networks),想了解如何在 Keras 中表达一对一、一对多、多对一和多对多 LSTM 神经网络. 我已经阅读了很多关于 RNN 并了解 LSTM NN 的工作原理,特别是消失梯度、LSTM 单元、它们的输出和状态、序列输出等。但是,我无法在 Keras 中表达所有这些概念。

首先,我使用 LSTM 层创建了以下玩具神经网络

from keras.models import Model
from keras.layers import Input, LSTM
import numpy as np

t1 = Input(shape=(2, 3))
t2 = LSTM(1)(t1)
model = Model(inputs=t1, outputs=t2)

inp = np.array([[[1,2,3],[4,5,6]]])
model.predict(inp)
Run Code Online (Sandbox Code Playgroud)

输出:

array([[ 0.0264638]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

在我的示例中,我的输入形状为 2 x 3。据我所知,这意味着输入是 2 个向量的序列,每个向量具有 3 个特征,因此我的输入必须是 shape 的 3D 张量(n_examples, 2, 3)。在'sequences'方面,输入是一个长度为2的序列,该序列中的每个元素用3个特征表示(如有错误请指正)。当我打电话predict它时,它会返回一个带有单个标量的 2 维张量。所以,

Q1:是一对一的还是其他类型的LSTM网络?

当我们说“一个/多个输入和一个/多个输出”时

Q2:我们所说的“一个/多个输入/输出”是什么意思?“一个/多个”标量、向量、序列……,一个/多个什么? …

python neural-network lstm keras recurrent-neural-network

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

keras GRU 层中的返回状态和返回序列有什么区别?

我似乎无法理解 keras GRU 层中返回状态和返回序列之间的差异。

由于 GRU 单元没有单元状态(它等于输出),返回状态与 keras GRU 层中的返回序列有何不同?

更具体地说,我构建了一个编码器-解码器 LSTM 模型,其中包含一个编码器层和一个解码器层。编码器层返回其状态(return_state = TRUE),解码器层使用这些状态作为初始状态(initial_state = encoder_states)

当尝试使用 GRU 层执行此操作时,我不明白在编码器和解码器层之间传递了什么状态。如果你能澄清这一点,请告诉我。提前致谢。

machine-learning lstm keras tensorflow recurrent-neural-network

8
推荐指数
1
解决办法
2004
查看次数

为什么为 tf.keras.layers.LSTM 设置 return_sequences=True 和 stateful=True?

我正在学习 tensorflow2.0 并按照教程进行操作。在rnn示例中,我找到了代码:

def build_model(vocab_size, embedding_dim, rnn_units, batch_size):
  model = tf.keras.Sequential([
    tf.keras.layers.Embedding(vocab_size, embedding_dim, 
                              batch_input_shape=[batch_size, None]),
    tf.keras.layers.LSTM(rnn_units, 
                        return_sequences=True, 
                        stateful=True, 
                        recurrent_initializer='glorot_uniform'),
    tf.keras.layers.Dense(vocab_size)
  ])
  return model
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么代码设置了参数return_sequences=Truestateful=True?如何使用默认参数?

lstm keras tensorflow recurrent-neural-network

8
推荐指数
3
解决办法
4138
查看次数

Keras:使用 LSTM 时混洗数据集

如果我错了,请纠正我,但根据官方Keras 文档,默认情况下,fit 函数的参数为​​“shuffle=True”,因此它会在每个 epoch 上对整个训练数据集进行洗牌。

但是,使用 LSTM 或 GRU 等循环神经网络的要点是使用每个数据的精确顺序,以便先前数据的状态影响当前数据。

如果我们将所有数据打乱,所有逻辑序列都会被破坏。因此我不明白为什么有这么多 LSTM 的例子,其中参数没有设置为 False。使用没有序列的 RNN 有什么意义?

此外,当我将 shuffle 选项设置为 False 时,即使数据之间存在依赖关系,我的 LSTM 模型的性能也会降低:我使用 KDD99 数据集,其中连接有链接。

shuffle lstm keras tensorflow recurrent-neural-network

8
推荐指数
1
解决办法
2490
查看次数

tensorflow 2.0 中是否有 cudnnLSTM 或 cudNNGRU 替代方案

CuDNNGRUTensorFlow 1.0是非常快。但是当我转移到TensorFlow 2.0我无法找到CuDNNGRU. 简单GRUTensorFlow 2.0.

有没有办法使用CuDNNGRUTensorFlow 2.0

python keras tensorflow recurrent-neural-network tensorflow2.0

8
推荐指数
1
解决办法
4801
查看次数

为 RNN 设置正确的输入

在数据库中有带有记录的时间序列数据:

  • device- timestamp- temperature- min limit-max limit
  • device- timestamp- temperature- min limit-max limit
  • device- timestamp- temperature- min limit-max limit
  • ...

device有 4 小时的时间序列数据(间隔 5 分钟)在发出警报之前和 4 小时的时间序列数据(再次间隔 5 分钟)没有引发任何警报。该图更好地描述了数据的表示,对于每个device

在此处输入图片说明

我需要在 python 中使用 RNN 类进行警报预测。当temperature低于min limit或高于时,我们定义警报max limit

从 tensorflow here阅读官方文档后,我在理解如何设置模型的输入时遇到了麻烦。我应该事先规范化数据还是其他什么,如果是,如何规范化?

同样阅读这里的答案也没有帮助我清楚地了解如何将我的数据转换为 RNN 模型可接受的格式。

关于我的情况下XYinmodel.fit应该是什么样子的任何帮助?

如果您看到有关此问题的任何其他问题,请随时发表评论。

附注。我已经设定python …

machine-learning normalization neural-network lstm recurrent-neural-network

8
推荐指数
1
解决办法
407
查看次数