标签: lstm

了解Keras LSTM

我试图调和我对LSTM的理解,并在克里斯托弗·奥拉在克拉拉斯实施的这篇文章中指出.我正在关注Jason Brownlee为Keras教程撰写博客.我主要困惑的是,

  1. 将数据系列重塑为[samples, time steps, features]和,
  2. 有状态的LSTM

让我们参考下面粘贴的代码集中讨论上述两个问题:

# reshape into X=t and Y=t+1
look_back = 3
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)

# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1))
testX = numpy.reshape(testX, (testX.shape[0], look_back, 1))
########################
# The IMPORTANT BIT
##########################
# create and fit the LSTM network
batch_size = 1
model = Sequential()
model.add(LSTM(4, …
Run Code Online (Sandbox Code Playgroud)

python deep-learning lstm keras

259
推荐指数
4
解决办法
4万
查看次数

如何在TensorFlow中应用渐变剪裁?

考虑示例代码.

我想知道如何在可能爆炸梯度的RNN上对此网络应用渐变剪辑.

tf.clip_by_value(t, clip_value_min, clip_value_max, name=None)
Run Code Online (Sandbox Code Playgroud)

这是一个可以使用的示例,但我在哪里介绍这个?在defN的RNN

    lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)
    # Split data because rnn cell needs a list of inputs for the RNN inner loop
    _X = tf.split(0, n_steps, _X) # n_steps
tf.clip_by_value(_X, -1, 1, name=None)
Run Code Online (Sandbox Code Playgroud)

但是这没有意义,因为张量_X是输入而不是渐变的被剪裁的东西?

我是否必须为此定义自己的优化器,还是有更简单的选项?

python machine-learning deep-learning lstm tensorflow

90
推荐指数
6
解决办法
6万
查看次数

Tensorflow - ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

上一个问题的延续:Tensorflow - TypeError: 'int' object is not iterable

我的训练数据是一个列表列表,每个列表包含 1000 个浮点数。例如,x_train[0] =

[0.0, 0.0, 0.1, 0.25, 0.5, ...]
Run Code Online (Sandbox Code Playgroud)

这是我的模型:

model = Sequential()

model.add(LSTM(128, activation='relu',
               input_shape=(1000, 1), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid'))

opt = tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Traceback (most recent call last):
      File "C:\Users\bencu\Desktop\ProjectFiles\Code\Program.py", line 88, in FitModel
        model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))
      File "C:\Users\bencu\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 728, in fit
        use_multiprocessing=use_multiprocessing)
      File "C:\Users\bencu\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 224, in fit …
Run Code Online (Sandbox Code Playgroud)

python lstm keras tensorflow

78
推荐指数
6
解决办法
15万
查看次数

Keras:LSTM丢失与LSTM重复丢失之间的差异

从Keras文档:

dropout:浮点数介于0和1之间.为输入的线性变换而下降的单位的分数.

recurrent_dropout:浮点数在0和1之间.对于循环状态的线性变换,单位的分数下降.

任何人都可以指出每个辍学下面的图像在哪里发生?

在此输入图像描述

lstm keras dropout

52
推荐指数
2
解决办法
2万
查看次数

PyTorch - 连续()

我在github上看到了这个LSTM语言模型的例子(链接).它一般来说对我来说非常清楚.但是我仍然在努力理解调用的内容contiguous(),这在代码中会多次发生.

例如,在代码输入的第74/75行中,创建LSTM的目标序列.数据(存储在其中ids)是二维的,其中第一维是批量大小.

for i in range(0, ids.size(1) - seq_length, seq_length):
    # Get batch inputs and targets
    inputs = Variable(ids[:, i:i+seq_length])
    targets = Variable(ids[:, (i+1):(i+1)+seq_length].contiguous())
Run Code Online (Sandbox Code Playgroud)

举个简单的例子,当使用批量大小为1和seq_length10时inputs,targets看起来像这样:

inputs Variable containing:
0     1     2     3     4     5     6     7     8     9
[torch.LongTensor of size 1x10]

targets Variable containing:
1     2     3     4     5     6     7     8     9    10
[torch.LongTensor of size 1x10]
Run Code Online (Sandbox Code Playgroud)

所以一般来说我的问题是,contiguous()我需要什么以及为什么需要它?

此外,我不明白为什么该方法被调用目标序列而不是输入序列,因为两个变量都包含相同的数据.

怎么可能targetsinputs不连续的,仍然是连续的? …

neural-network contiguous deep-learning lstm pytorch

52
推荐指数
6
解决办法
3万
查看次数

在LSTM中使用tanh的直觉是什么?

在LSTM网络(了解LSTM)中,为什么输入门和输出门使用tanh?这背后的直觉是什么?它只是一个非线性变换?如果是,我可以将两者都更改为另一个激活功能(例如ReLU)吗?

machine-learning deep-learning lstm recurrent-neural-network activation-function

49
推荐指数
2
解决办法
3万
查看次数

tensorflow BasicLSTMCell中的num_units是什么?

在MNIST LSTM示例中,我不明白"隐藏层"的含义.是否随着时间的推移代表展开的RNN时会形成虚构层?

为什么num_units = 128在大多数情况下?

我知道我应该详细阅读colah的博客来理解这一点,但在此之前,我只是希望得到一些代码来处理我所拥有的时间序列数据.

neural-network lstm tensorflow recurrent-neural-network

47
推荐指数
7
解决办法
3万
查看次数

如何在keras中堆叠多个lstm?

我正在使用深度学习库keras并尝试堆叠多个LSTM而没有运气.以下是我的代码

model = Sequential()
model.add(LSTM(100,input_shape =(time_steps,vector_size)))
model.add(LSTM(100))
Run Code Online (Sandbox Code Playgroud)

上面的代码在第三行返回错误 Exception: Input 0 is incompatible with layer lstm_28: expected ndim=3, found ndim=2

输入X是一个形状的张量(100,250,50).我在tensorflow后端运行keras

deep-learning lstm keras tensorflow keras-layer

46
推荐指数
2
解决办法
3万
查看次数

双向LSTM和LSTM之间有什么区别?

有人可以解释一下吗?我知道双向LSTM有前向和后向通过,但这比单向LSTM有什么优势?

他们每个人更适合什么?

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

45
推荐指数
4
解决办法
3万
查看次数

在Keras中,当我使用N`单位'创建有状态的'LSTM`层时,我究竟在配置什么?

普通Dense层中的第一个参数也是units,并且是该层中的神经元/节点的数量.然而,标准LSTM单元如下所示:

在此输入图像描述

(这是" 理解LSTM网络 " 的重写版本)

在Keras,当我创建这样的LSTM对象LSTM(units=N, ...)时,我实际上是在创建N这些LSTM单元吗?或者它是LSTM单元内"神经网络"层的大小,即W公式中的?或者是别的什么?

对于上下文,我正在基于此示例代码工作.

以下是文档:https://keras.io/layers/recurrent/

它说:

units:正整数,输出空间的维数.

这让我觉得它是Keras LSTM"图层"对象的输出数量.意味着下一层将有N输入.这是否意味着NLSTM层中实际存在这些LSTM单元,或者可能只运行一个 LSTM单元用于N迭代输出N这些h[t]值,例如,从h[t-N]多达h[t]

如果只定义了输出的数量,这是否意味着输入尚可,说,只是一个,还是我们必须手动创建滞后输入变量x[t-N]x[t],一个由定义的每个LSTM单位units=N的说法?

在我写这篇文章的时候,我发现了论证的return_sequences作用.如果设置为True所有N输出都传递到下一层,而如果设置为False它,则只将最后一个h[t]输出传递给下一层.我对吗?

neural-network lstm keras tensorflow

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