标签: recurrent-neural-network

在Tensorflow中混合前馈层和复发层?

有没有人能够在Tensorflow中混合前馈层和重复层?

例如:input-> conv-> GRU-> linear-> output

我可以想象一个人可以用前馈层定义他自己的单元格而没有可以使用MultiRNNCell函数堆叠的状态,如:

cell = tf.nn.rnn_cell.MultiRNNCell([conv_cell,GRU_cell,linear_cell])

这会让生活变得更轻松......

python tensorflow recurrent-neural-network gated-recurrent-unit

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

Keras预测的流输出

我在Keras有一个LSTM,我正在训练预测时间序列数据.我希望网络在每个时间步输出预测,因为它将每15秒接收一个新输入.所以我正在努力的是训练它的正确方法,以便它输出h_0,h_1,...,h_t作为一个恒定的流,因为它接收x_0,x_1,....,x_t作为输入流.这样做有最好的做法吗?

在此输入图像描述

python keras recurrent-neural-network

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

在TensorFlow中,在GPU之间均匀分割RNN内存消耗

我试图找出在两个GPU之间均匀分配seq2seq网络的内存负载的最具战略性的方法.

使用卷积网络,任务更容易.但是,我正在试图弄清楚如何最大化2 Titan X的内存使用量.目标是构建最大的24GB内存允许的网络.

一个想法是将每个RNN层放在单独的GPU中.

GPU1 --> RNN Layer 1 & Backward Pass
GPU2 --> RNN Layer 2,3,4
Run Code Online (Sandbox Code Playgroud)

但是,backprop计算需要大量内存.因此,另一个想法是在一个GPU上进行整个前向传递,在单独的GPU上进行后向传递.

GPU1 --> Forward Pass
GPU2 --> Backward Pass
Run Code Online (Sandbox Code Playgroud)

(但是,GPU2仍占用大部分内存负载)

有没有办法测量使用了多少GPU内存?这将使我们能够弄清楚如何在每个GPU"填满"之前最大化它们.

一旦使用了2个GPU,我最终会想要使用4个GPU.但是,我认为最大化2个GPU是第一步.

memory gpu out-of-memory tensorflow recurrent-neural-network

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

如何处理面板数据以用于递归神经网络(RNN)

我一直在对递归神经网络进行一些研究,但我无法理解它们是否以及如何用于分析面板数据(意味着在几个主题的不同时间段捕获的横截面数据 - 参见样本数据我见过的大多数RNN的例子都与文本序列有关,而不是真正的面板数据,所以我不确定它们是否适用于这种类型的数据.

样本数据:

ID    TIME    Y    X1    X2    X3
1     1       5     3     0    10
1     2       5     2     2    6
1     3       6     6     3    11
2     1       2     2     7    2
2     2       3     3     1    19
2     3       3     8     6    1
3     1       7     0     2    0
Run Code Online (Sandbox Code Playgroud)

如果我想在给定协变量X1,X2和X3(以及它们之前时间段的值)的特定时间预测Y,那么这种序列是否可以通过递归神经网络进行评估?如果是这样,你是否有任何资源或想法如何将这种类型的数据转换为特征向量和匹配可以传递给RNN的标签(我使用的是Python,但我对其他实现开放).

python panel-data recurrent-neural-network

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

序列预测LSTM神经网络落后

我正在尝试实现猜测游戏,用户猜测硬币翻转,神经网络试图预测他的猜测(当然没有后见之明的知识).游戏应该是实时的,它适应用户.我使用了突触js,因为它看起来很稳固.

然而,我似乎无法通过一个绊脚石:神经网络随着猜测不断落后.就像,如果用户按下

heads heads tail heads heads tail heads heads tail
Run Code Online (Sandbox Code Playgroud)

它确实识别出这种模式,但它却落后于两个动作

tail heads heads tail heads heads tail heads heads
Run Code Online (Sandbox Code Playgroud)

我尝试了无数的策略:

  • 当用户与用户一起点击头部或尾部时训练网络
  • 有一个用户条目和清除网络内存的日志,并重新训练所有条目,直到猜测点
  • 混合和匹配训练与激活一系列方法
  • 尝试移动到感知器立即传递一堆动作(工作比LSTM差)
  • 我忘了一堆其他的东西

建筑:

  • 2个输入,无论用户是否在前一回合中点击了头部或尾部
  • 2个输出,预测用户下次点击的内容(这将在下一轮输入)

我已经在隐藏层和各种训练时期尝试了10-30个神经元,但我经常遇到同样的问题!

我将发布我正在执行此操作的bucklescript代码.

我究竟做错了什么?或者我的预期对于预测用户实时猜测是不合理的?有没有替代算法?

class type _nnet = object
    method activate : float array -> float array
    method propagate : float -> float array -> unit
    method clone : unit -> _nnet Js.t
    method clear : unit -> unit
end [@bs]

type nnet = _nnet Js.t

external ltsm : int -> …
Run Code Online (Sandbox Code Playgroud)

neural-network lstm recurrent-neural-network

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

递归神经网络(RNN) - 忘记层和TensorFlow

我是RNN的新手,我正在试图找出LSTM细胞的细节,它们与TensorFlow有关:Colah GitHub 在此输入图像描述 与TensorFlow相比,GitHub网站的示例使用相同的LSTM单元吗?我在TensorFlow网站上唯一得到的是基本LSTM单元使用以下架构:Paper如果它是相同的架构,那么我可以手工计算LSTM单元的数字并查看它是否匹配.

此外,当我们在张量流中设置基本LSTM单元时,它会num_units根据:TensorFlow文档获取

tf.nn.rnn_cell.GRUCell.__init__(num_units, input_size=None, activation=tanh)
Run Code Online (Sandbox Code Playgroud)

这个隐藏状态(h_t)和细胞状态(C_t)的数量是多少?

根据GitHub网站,没有提到细胞状态和隐藏状态的数量.我假设他们必须是相同的号码?

python tensorflow recurrent-neural-network

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

在没有填充的情况下改变Keras中的序列长度

我有一个关于Keras中LSTM序列长度不同的问题.我将大小为200的批次和可变长度序列(= x)与序列中每个对象(=> [200,x,100])的100个特征传递到LSTM:

LSTM(100, return_sequences=True, stateful=True, input_shape=(None, 100), batch_input_shape=(200, None, 100))
Run Code Online (Sandbox Code Playgroud)

我将模型拟合到以下随机创建的矩阵中:

x_train = np.random.random((1000, 50, 100))
x_train_2 = np.random.random((1000, 10,100))
Run Code Online (Sandbox Code Playgroud)

据我所知,LSTM(和Keras实现)正确,x应该指LSTM单元的数量.对于每个LSTM单元,必须学习状态和三个矩阵(用于单元的输入,状态和输出).如何在不填充最大值的情况下将不同的序列长度传递到LSTM中.指定长度,就像我一样?代码正在运行,但它实际上不应该(在我的理解中).甚至可以在之后传递另一个序列长度为60的x_train_3,但是不应该有额外的10个单元格的状态和矩阵.

顺便说一句,我使用Keras版本1.0.8和Tensorflow GPU 0.9.

这是我的示例代码:

from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np
from keras import backend as K

with K.get_session():

    # create model
    model = Sequential()
    model.add(LSTM(100, return_sequences=True, stateful=True, input_shape=(None, 100),
             batch_input_shape=(200, None, 100)))
    model.add(LSTM(100))
    model.add(Dense(2, activation='softmax'))
    model.compile(loss='categorical_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])

    # Generate dummy training data
    x_train = np.random.random((1000, 50, 100))
    x_train_2 = np.random.random((1000, …
Run Code Online (Sandbox Code Playgroud)

padding sequence lstm keras recurrent-neural-network

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

如何在Tensorflow中使用多层双向LSTM?

我想知道如何在Tensorflow中使用多层双向LSTM.

我已经实现了双向LSTM的内容,但我想将此模型与添加的多层模型进行比较.

我该如何在这部分中添加一些代码?

x = tf.unstack(tf.transpose(x, perm=[1, 0, 2]))
#print(x[0].get_shape())

# Define lstm cells with tensorflow
# Forward direction cell
lstm_fw_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)
# Backward direction cell
lstm_bw_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)

# Get lstm cell output
try:
    outputs, _, _ = rnn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, x,
                                          dtype=tf.float32)
except Exception: # Old TensorFlow version only returns outputs not states
    outputs = rnn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, x,
                                    dtype=tf.float32)

# Linear activation, using rnn inner loop last output
outputs = tf.stack(outputs, axis=1)
outputs = tf.reshape(outputs, (batch_size*n_steps, …
Run Code Online (Sandbox Code Playgroud)

bidirectional multi-layer lstm tensorflow recurrent-neural-network

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

RNN正则化:要对哪个组件进行正则化?

我正在构建一个用于分类的RNN(在RNN之后有一个softmax层)。要进行正则化的选项有很多,我不确定是否只尝试所有这些,效果会一样吗?在什么情况下我应该规范哪些组件?

这些组件是:

  • 内核权重(图层输入)
  • 循环重量
  • 偏压
  • 激活功能(层输出)

python regularized deep-learning keras recurrent-neural-network

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

pytorch中的num_layers = 2的1个LSTM和2个LSTM之间的差异

我是深度学习的新手,目前正在使用LSTM进行语言建模。我在看pytorch文档,对此感到困惑。

如果我创建一个

nn.LSTM(input_size, hidden_size, num_layers) 
Run Code Online (Sandbox Code Playgroud)

其中hidden_​​size = 4和num_layers = 2,我想我将拥有一个类似的架构:

op0    op1 ....
LSTM -> LSTM -> h3
LSTM -> LSTM -> h2
LSTM -> LSTM -> h1
LSTM -> LSTM -> h0
x0     x1 .....
Run Code Online (Sandbox Code Playgroud)

如果我做类似的事情

nn.LSTM(input_size, hidden_size, 1)
nn.LSTM(input_size, hidden_size, 1)
Run Code Online (Sandbox Code Playgroud)

我认为网络架构将与上面完全一样。我错了吗?如果是,这两者之间有什么区别?

deep-learning lstm recurrent-neural-network pytorch

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