标签: recurrent-neural-network

Caffe的LSTM模块

有谁知道Caffe是否存在一个漂亮的LSTM模块?我在russel91的github帐户中找到了一个,但显然包含示例和解释的网页消失了(以前http://apollo.deepmatter.io/ - >它现在只重定向到github页面,不再有例子或解释).

neural-network deep-learning caffe lstm recurrent-neural-network

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

张量流中的最小RNN示例

尝试在张量流中实现最小玩具RNN示例.目标是学习从输入数据到目标数据的映射,类似于这个精彩简洁的例子.

更新:我们到了那里.剩下的唯一部分是使它收敛(并且不那么复杂).有人可以帮助将以下内容转换为运行代码或提供一个简单的示例吗?

import tensorflow as tf
from tensorflow.python.ops import rnn_cell

init_scale = 0.1
num_steps = 7
num_units = 7
input_data = [1, 2, 3, 4, 5, 6, 7]
target = [2, 3, 4, 5, 6, 7, 7]
#target = [1,1,1,1,1,1,1] #converges, but not what we want


batch_size = 1

with tf.Graph().as_default(), tf.Session() as session:
  # Placeholder for the inputs and target of the net
  # inputs = tf.placeholder(tf.int32, [batch_size, num_steps])
  input1 = tf.placeholder(tf.float32, [batch_size, 1])
  inputs = …
Run Code Online (Sandbox Code Playgroud)

tensorflow recurrent-neural-network

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

输入到LSTM网络张量流

我有一个长度为t(x0,...,xt)的时间序列,每个xi是一个d维向量,即xi =(x0i,x1i,...,xdi).因此我的输入X的形状[batch_size,d]

张量流LSTM的输入应为[batchSize,hidden_​​size]的大小.我的问题是我应该如何输入我的时间序列到LSTM.我想到的一个可能的解决方案是具有额外的权重矩阵W,其大小为[d,hidden_​​size]并且用X*W + B输入LSTM.

这是正确的还是我应该向netwoרk输入其他内容?

谢谢

python lstm tensorflow recurrent-neural-network

15
推荐指数
1
解决办法
5027
查看次数

Keras:我应该如何为RNN准备输入数据?

我在为Keras准备RNN的输入数据时遇到了麻烦.

目前,我的培训数据维度是: (6752, 600, 13)

  • 6752:训练数据的数量
  • 600:时间步数
  • 13:特征向量的大小(向量是浮点数)

X_train并且Y_train都在这个方面.

我想把这些数据准备好SimpleRNN用于Keras.假设我们正在经历时间步骤,从步骤#0到步骤#599.假设我想使用input_length = 5,这意味着我想使用最近的5个输入.(例如步骤#10,#11,#12,#13,#14 @步骤#14).

我应该如何重塑X_train

应该是(6752, 5, 600, 13)或应该是(6752, 600, 5, 13)吗?

什么形状应该Y_train在?

它应该是(6752, 600, 13)(6752, 1, 600, 13)(6752, 600, 1, 13)

deep-learning lstm keras recurrent-neural-network

15
推荐指数
2
解决办法
5986
查看次数

了解有状态LSTM

我正在阅读有关RNN/LSTM的本教程,我很难理解有状态的LSTM.我的问题如下:

1.培训批量大小

在关于RNN的Keras文档中,我发现i批次中位于样本中的样本的隐藏状态将作为输入隐藏状态提供i给下一批中的样本.这是否意味着如果我们想要将隐藏状态从样本传递到样本,我们必须使用大小为1的批次,因此执行在线梯度下降?有没有办法在批量> 1的批次中传递隐藏状态并在该批次上执行梯度下降?

2. One-Char映射问题

在教程的段落中,"一个字符到一个字符映射的状态LSTM"被给出了一个代码,该代码使用batch_size = 1stateful = True学习在给定字母表字母的情况下预测字母表的下一个字母.在代码的最后部分(第53行到完整代码的结尾),模型以随机字母('K')开始测试并预测'B'然后给出'B'它预测'C'等等除了'K'之外,它似乎运作良好.但是,我尝试了下面的代码调整(最后一部分,我保持52行及以上):

    # demonstrate a random starting point
    letter1 = "M"
    seed1 = [char_to_int[letter1]]
    x = numpy.reshape(seed, (1, len(seed), 1))
    x = x / float(len(alphabet))
    prediction = model.predict(x, verbose=0)
    index = numpy.argmax(prediction)
    print(int_to_char[seed1[0]], "->", int_to_char[index])
    letter2 = "E"
    seed2 = [char_to_int[letter2]]
    seed = seed2
    print("New start: ", letter1, letter2)
    for i in range(0, 5):
        x = numpy.reshape(seed, …
Run Code Online (Sandbox Code Playgroud)

stateful deep-learning lstm keras recurrent-neural-network

15
推荐指数
1
解决办法
5928
查看次数

了解Keras LSTM:批量大小和有状态的作用

来源

有几个来源解释有状态/无状态LSTM以及我已经读过的batch_size的作用.我稍后会在帖子中提及它们:

[ 1 ] https://machinelearningmastery.com/understanding-stateful-lstm-recurrent-neural-networks-python-keras/

[ 2 ] https://machinelearningmastery.com/stateful-stateless-lstm-time-series-forecasting-python/

[ 3 ] http://philipperemy.github.io/keras-stateful-lstm/

[ 4 ] https://machinelearningmastery.com/use-different-batch-sizes-training-predicting-python-keras/

Ans还有其他SO线程,比如了解Keras LSTMKeras - 有状态的vs无状态LSTM,但是并没有完全解释我正在寻找的东西.


我的问题

我仍然不确定有关状态和确定batch_size的任务的正确方法是什么.

我有大约1000个独立的时间序列(samples),每个长度大约600天(timesteps)(实际上是可变长度,但我考虑将数据修剪到一个恒定的时间帧),input_dim每个时间步长有8个特征(或)(一些特征与每个样本相同,每个样本一些个体).

Input shape = (1000, 600, 8)

其中一个特征是我想要预测的特征,而其他特征(应该是)支持预测这一个"主要特征".我会为1000个时间序列中的每一个都这样做.什么是模拟这个问题的最佳策略?

Output shape = (1000, 600, 1)


什么是批次?

从[ 4 ]:

Keras使用快速符号数学库作为后端,例如TensorFlow和Theano.

使用这些库的缺点是,无论您是在训练网络还是进行预测,数据的形状和大小都必须预先定义并保持不变.

[...]

当您希望进行的预测少于批量大小时,这确实会成为一个问题.例如,您可以获得批量较大的最佳结果,但需要在时间序列或序列问题等方面对一次观察进行预测.

这听起来像是一个"批处理"将沿着timesteps-dimension 分割数据.

但是,[ 3 ]指出:

换句话说,无论何时训练或测试LSTM,首先必须建立批量大小分割的输入X形状矩阵.例如,如果和,则表示您的模型将接收64个样本的块,计算每个输出(无论每个样本的时间步数是多少),平均梯度并传播它以更新参数向量.nb_samples, timesteps, input_dimnb_samplesnb_samples=1024batch_size=64

当深入研究[ 1 ]和[ 4 ] 的例子时,Jason总是将他的时间序列分成几个只包含1个时间步长的样本(在他的例子中完全确定序列中下一个元素的前身).所以我认为批次实际上是沿着samples-axis …

python lstm keras recurrent-neural-network

15
推荐指数
1
解决办法
4827
查看次数

具有LSTM单元的Keras RNN用于基于多个输入时间序列预测多个输出时间序列

我想用LSTM单元模拟RNN,以便根据多个输入时间序列预测多个输出时间序列.具体而言,我有4个输出时间序列,y1 [t],y2 [t],y3 [t],y4 [t],每个具有3,000的长度(t = 0,...,2999).我还有3个输入时间序列,x1 [t],x2 [t],x3 [t],每个都有3000秒的长度(t = 0,...,2999).目标是使用直到当前时间点的所有输入时间序列来预测y1 [t],... y4 [t],即:

  y1[t] = f1(x1[k],x2[k],x3[k], k = 0,...,t)
  y2[t] = f2(x1[k],x2[k],x3[k], k = 0,...,t)
  y3[t] = f3(x1[k],x2[k],x3[k], k = 0,...,t)
  y4[t] = f3(x1[k],x2[k],x3[k], k = 0,...,t)
Run Code Online (Sandbox Code Playgroud)

对于具有长期记忆的模型,我通过以下方式创建了有状态的RNN模型.keras-stateful-lstme.我的案例和keras-stateful-lstme之间的主要区别在于我:

  • 超过1个输出时间序列
  • 超过1个输入时间序列
  • 目标是连续时间序列的预测

我的代码正在运行.然而,即使使用简单的数据,模型的预测结果也很糟糕.所以我想问你我是否有任何错误.

这是我的代码与玩具示例.

在玩具示例中,我们的输入时间序列是简单的cosign和sign wave:

import numpy as np
def random_sample(len_timeseries=3000):
    Nchoice = 600
    x1 = np.cos(np.arange(0,len_timeseries)/float(1.0 + np.random.choice(Nchoice)))
    x2 = np.cos(np.arange(0,len_timeseries)/float(1.0 + np.random.choice(Nchoice)))
    x3 = np.sin(np.arange(0,len_timeseries)/float(1.0 + np.random.choice(Nchoice)))
    x4 = np.sin(np.arange(0,len_timeseries)/float(1.0 + np.random.choice(Nchoice))) …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras recurrent-neural-network

14
推荐指数
1
解决办法
7247
查看次数

Keras中LSTM的多维输入

我想了解RNN,特别是LSTM如何使用Keras和Tensorflow处理多个输入维度.我的意思是输入形状是(batch_size,timesteps,input_dim),其中input_dim> 1.
我认为如果input_dim = 1,下面的图像很好地说明了LSTM的概念.
这是否意味着如果input_dim> 1则x不是单个值还有一个阵列?但是如果它是这样的那么权重也变成数组,形状与x +上下文相同?

LSTM结构

在此输入图像描述

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

14
推荐指数
1
解决办法
3000
查看次数

Tensorflow:model_with_buckets模型中freeze_graph.py的"output_node_names"是什么?

我培养了tf.nn.seq2seq.model_with_buckets具有seq2seq = tf.nn.seq2seq.embedding_attention_seq2seq非常相似的例子Tensorflow教程.

现在我想使用冻结图表freeze_graph.py.如何在模型中找到"output_node_names"?

tensorflow recurrent-neural-network

13
推荐指数
2
解决办法
8518
查看次数

ValueError:输入0与层lstm_13不兼容:预期ndim = 3,找到ndim = 4

我正在尝试进行多级分类,这里是我的训练输入和输出的详细信息:

train_input.shape =(1,95000,360)(95000长度输入数组,每个元素是360长度的数组)

train_output.shape =(1,95000,22)(22门课程)

model = Sequential()

model.add(LSTM(22, input_shape=(1, 95000,360)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(train_input, train_output, epochs=2, batch_size=500)
Run Code Online (Sandbox Code Playgroud)

错误是:

ValueError:输入0与层lstm_13不兼容:期望ndim = 3,在行中找到ndim = 4:model.add(LSTM(22,input_shape =(1,95000,360)))

请帮帮我,我无法通过其他答案解决.

python lstm keras recurrent-neural-network

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