有没有人能够在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
我在Keras有一个LSTM,我正在训练预测时间序列数据.我希望网络在每个时间步输出预测,因为它将每15秒接收一个新输入.所以我正在努力的是训练它的正确方法,以便它输出h_0,h_1,...,h_t作为一个恒定的流,因为它接收x_0,x_1,....,x_t作为输入流.这样做有最好的做法吗?
我试图找出在两个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
我一直在对递归神经网络进行一些研究,但我无法理解它们是否以及如何用于分析面板数据(意味着在几个主题的不同时间段捕获的横截面数据 - 参见样本数据我见过的大多数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,但我对其他实现开放).
我正在尝试实现猜测游戏,用户猜测硬币翻转,神经网络试图预测他的猜测(当然没有后见之明的知识).游戏应该是实时的,它适应用户.我使用了突触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)
我尝试了无数的策略:
建筑:
我已经在隐藏层和各种训练时期尝试了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) 我是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网站,没有提到细胞状态和隐藏状态的数量.我假设他们必须是相同的号码?
我有一个关于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) 我想知道如何在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
我正在构建一个用于分类的RNN(在RNN之后有一个softmax层)。要进行正则化的选项有很多,我不确定是否只尝试所有这些,效果会一样吗?在什么情况下我应该规范哪些组件?
这些组件是:
python regularized deep-learning keras recurrent-neural-network
我是深度学习的新手,目前正在使用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)
我认为网络架构将与上面完全一样。我错了吗?如果是,这两者之间有什么区别?
python ×5
lstm ×4
tensorflow ×4
keras ×3
gpu ×1
memory ×1
multi-layer ×1
padding ×1
panel-data ×1
pytorch ×1
regularized ×1
sequence ×1