标签: recurrent-neural-network

Keras中的多对一和多对LSTM示例

我尝试了解LSTM以及如何使用Keras构建它们.我发现,主要有4种运行RNN的模式(图中右边4种)

在此输入图像描述 图片来源:Andrej Karpathy

现在我想知道他们每个人的简约代码片段在Keras中会是什么样子.所以像

model = Sequential()
model.add(LSTM(128, input_shape=(timesteps, data_dim)))
model.add(Dense(1))
Run Code Online (Sandbox Code Playgroud)

对于4个任务中的每个任务,可能只需要一点点解释.

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

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

卷积和递归神经网络有什么区别?

我是神经网络主题的新手.我遇到了两个术语卷积神经网络递归神经网络.

我想知道这两个术语是指同一个词,或者,如果没有,它们之间会有什么区别?

neural-network difference recurrent-neural-network

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

为什么我们在pytorch中"打包"序列?

我试图复制如何使用包装为rnn的可变长度序列输入,但我想我首先需要理解为什么我们需要"打包"序列.

我理解为什么我们需要"填充"它们,但为什么要"打包"(通过pack_padded_sequence)必要?

任何高级别的解释将不胜感激!

deep-learning recurrent-neural-network pytorch tensor zero-padding

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

在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万
查看次数

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

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

他们每个人更适合什么?

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

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

如何在Keras中创建可变长度输入LSTM?

我正在尝试使用Keras使用LSTM进行一些香草模式识别来预测序列中的下一个元素.

我的数据如下所示:

我的数据

其中训练序列的标签是列表中的最后一个元素:X_train['Sequence'][n][-1].

因为我的Sequence列在序列中可以有可变数量的元素,所以我认为RNN是最好的模型.以下是我在Keras建立LSTM的尝试:

# Build the model

# A few arbitrary constants...
max_features = 20000
out_size = 128

# The max length should be the length of the longest sequence (minus one to account for the label)
max_length = X_train['Sequence'].apply(len).max() - 1

# Normal LSTM model construction with sigmoid activation
model = Sequential()
model.add(Embedding(max_features, out_size, input_length=max_length, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))

# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

以下是我尝试训练模型的方法: …

variable-length python-3.x lstm keras recurrent-neural-network

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

如何在Keras中使用return_sequences选项和TimeDistributed层?

我有一个像下面的对话框.我想实现一个预测系统动作的LSTM模型.系统动作被描述为位向量.并且用户输入被计算为字嵌入,其也是位向量.

t1: user: "Do you know an apple?", system: "no"(action=2)
t2: user: "xxxxxx", system: "yyyy" (action=0)
t3: user: "aaaaaa", system: "bbbb" (action=5)
Run Code Online (Sandbox Code Playgroud)

所以我想要实现的是"多对多(2)"模型.当我的模型收到用户输入时,它必须输出系统操作. 在此输入图像描述 但我无法理解LSTM后的return_sequences选项和TimeDistributed图层.要实现"多对多(2)",需要return_sequences==True添加TimeDistributedLSTM后?如果你能更多地描述它们,我感激不尽.

return_sequences:布尔值.是返回输出序列中的最后一个输出,还是返回完整序列.

TimeDistributed:此包装器允许将图层应用于输入的每个时间片.

更新2017/03/13 17:40

我想我能理解这个return_sequence选项.但我还不确定TimeDistributed.如果我添加一个TimeDistributedLSTM之后,模型是否与下面的"我的多对多(2)"相同?所以我认为Dense图层适用于每个输出. 在此输入图像描述

deep-learning lstm keras recurrent-neural-network

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

tensorflow dynamic_rnn和rnn有什么区别?

有几个类tf.nn与RNN有关.在这些例子中我在网上找到,tf.nn.dynamic_rnn而且tf.nn.rnn似乎可以互换使用,或者至少我似乎无法找出为什么一个代替其他的被使用.有什么不同?

tensorflow recurrent-neural-network

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

为什么要使用回归神经网络来处理结构化数据?

我一直在开发前馈神经网络(FNNS)和复发性神经网络(RNNs)在Keras与形状的结构化数据[instances, time, features],以及FNNS和RNNs的表现一直不变(除了RNNs需要更多的计算时间).

我还模拟了表格数据(下面的代码),我希望RNN的表现优于FNN,因为系列中的下一个值取决于系列中的先前值; 但是,两种架构都能正确预测.

对于NLP数据,我看到RNN优于FNN,但没有表格数据.一般来说,何时会期望RNN的表格数据优于FNN?具体来说,有人可以使用表格数据发布模拟代码,证明RNN优于FNN吗?

谢谢!如果我的模拟代码不适合我的问题,请调整它或分享一个更理想的模拟代码!

from keras import models
from keras import layers

from keras.layers import Dense, LSTM

import numpy as np
import matplotlib.pyplot as plt
Run Code Online (Sandbox Code Playgroud)

在10个时间步骤中模拟了两个特征,其中第二个特征的值取决于先前时间步骤中两个特征的值.

## Simulate data.

np.random.seed(20180825)

X = np.random.randint(50, 70, size = (11000, 1)) / 100

X = np.concatenate((X, X), axis = 1)

for i in range(10):

    X_next = np.random.randint(50, 70, size = (11000, 1)) / 100

    X = np.concatenate((X, X_next, (0.50 * X[:, -1].reshape(len(X), 1)) 
        + (0.50 * X[:, -2].reshape(len(X), …
Run Code Online (Sandbox Code Playgroud)

python prediction keras recurrent-neural-network

28
推荐指数
1
解决办法
1042
查看次数