标签: recurrent-neural-network

基于神经网络的时间序列预测

我一直在神经网络的各种用途最近.我曾在数字识别,XOR,以及其他各种易/你好world'ish应用了巨大的成功.

我想解决时间序列估计的领域.我没有在时刻大学帐户读取的话题(免费)所有IEEE/ACM论文,也可以找到很多资源利用人工神经网络的时间序列预报中的细节.

我想知道是否有人有任何建议或可以推荐任何有关使用人工神经网络通过时间序列数据进行预测的资源?

我假设要训练NN,你会立即插入几个时间步,预期输出将是下一个时间步(例如:n-5,n-4,n-3,n-2,n-1的输入应该在时间步长N处输出结果... ...并向下滑动一些时间步长并再次完成所有操作.

任何人都可以对此进行确认或评论吗?我会很感激!

artificial-intelligence time-series neural-network recurrent-neural-network

18
推荐指数
1
解决办法
9120
查看次数

在 Tensorflow RNN 中,logits 和标签必须是可广播的错误

我是 Tensorflow 和深度学习的新手。我试图在我创建的 RNN 模型中查看损失如何减少超过 10 个时期,该模型是为了从包含信用卡欺诈数据的kaggle 读取数据集。我试图将交易分类为欺诈(1)而不是欺诈(0)。当我尝试运行以下代码时,我不断收到以下错误:

> 2018-07-30 14:59:33.237749: W
> tensorflow/core/kernels/queue_base.cc:277]
> _1_shuffle_batch/random_shuffle_queue: Skipping cancelled enqueue attempt with queue not closed Traceback (most recent call last):  
> File
> "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py",
> line 1322, in _do_call
>     return fn(*args)   File "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py",
> line 1307, in _run_fn
>     options, feed_dict, fetch_list, target_list, run_metadata)   File "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py",
> line 1409, in _call_tf_sessionrun
>     run_metadata) tensorflow.python.framework.errors_impl.InvalidArgumentError: logits
> and labels must be broadcastable: logits_size=[1,2] labels_size=[1,24]
>    [[Node: softmax_cross_entropy_with_logits_sg =
> …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning tensorflow recurrent-neural-network

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

RNN初始状态是否为后续的小批量重置?

有人可以澄清TF中RNN的初始状态是否为后续的小批量重置,或者是否使用了Ilya Sutskever等人ICLR 2015中提到的上一个小批量的最后状态?

time-series tensorflow recurrent-neural-network

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

使用seq2seq API(版本1.1及更高版本)的Tensorflow序列到序列模型

我正在使用TensorFlow v:1.1,我想使用tf.contrib.seq2seq api 实现序列模型.但是我很难理解如何使用提供的所有函数(BasicDecoder,Dynamic_decode,Helper,Training Helper ...)来构建我的模型.

这是我的设置:我想将一系列特征向量"(翻译"):( batch_size,encoder_max_seq_len,feature_dim)转换为不同长度的序列(batch_size,decoder_max_len,1).

我已经有一个带有LSTM单元的RNN 编码器,我得到了它想要作为初始输入提供给解码器的最终状态.我已经有了解码器的单元,MultiRNNCell LSM.你能帮助我使用tf.contrib.seq2seq2和dynamic_decode 的功能构建最后一部分(会非常感谢示例代码解释)吗?

这是我的代码:

import tensorflow as tf
from tensorflow.contrib import seq2seq
from tensorflow.contrib import rnn
import math

from data import gen_sum_2b2

class Seq2SeqModel:
def __init__(self,
             in_size,
             out_size,
             embed_size,
             n_symbols,
             cell_type,
             n_units,
             n_layers):
    self.in_size = in_size
    self.out_size = out_size
    self.embed_size = embed_size
    self.n_symbols = n_symbols
    self.cell_type = cell_type
    self.n_units = n_units
    self.n_layers = n_layers

    self.build_graph() …
Run Code Online (Sandbox Code Playgroud)

deep-learning tensorflow recurrent-neural-network

17
推荐指数
1
解决办法
3307
查看次数

Pytorch LSTM 与 LSTMCell

Pytorch(目前是1.1版)中的LSTMLSTMCell有什么区别?看起来 LSTMCell 是 LSTM 的一个特例(即只有一层,单向,没有 dropout)。

那么,拥有这两种实现的目的是什么?除非我遗漏了什么,否则将 LSTM 对象用作 LSTMCell 是微不足道的(或者,使用多个 LSTMCell 来创建 LSTM 对象非常容易)

lstm recurrent-neural-network pytorch lstm-stateful

17
推荐指数
1
解决办法
8525
查看次数

获取TensorFlow中dynamic_rnn的最后一个输出

我有一个三维张量的形状[batch, None, dim],其中第二个维度,即时间步长,是未知的.我dynamic_rnn用来处理这样的输入,如下面的代码片段所示:

import numpy as np
import tensorflow as tf

batch = 2
dim = 3
hidden = 4

lengths = tf.placeholder(dtype=tf.int32, shape=[batch])
inputs = tf.placeholder(dtype=tf.float32, shape=[batch, None, dim])
cell = tf.nn.rnn_cell.GRUCell(hidden)
cell_state = cell.zero_state(batch, tf.float32)
output, _ = tf.nn.dynamic_rnn(cell, inputs, lengths, initial_state=cell_state)
Run Code Online (Sandbox Code Playgroud)

实际上,运行这个剪切了一些实际数字,我有一些合理的结果:

inputs_ = np.asarray([[[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]],
                    [[6, 6, 6], [7, 7, 7], [8, 8, 8], [9, 9, 9]]],
                    dtype=np.int32)
lengths_ = np.asarray([3, 1], …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning tensorflow recurrent-neural-network

16
推荐指数
3
解决办法
7231
查看次数

输入到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
查看次数

了解有状态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
查看次数

如何利用外部特征为LSTM构建具有时间序列多步幅度的输入数据?

我正在尝试使用LSTM进行商店销售预测.以下是我的原始数据的样子:

|     Date   | StoreID | Sales | Temperature |  Open   | StoreType |
|------------|---------|-------|-------------|---------|-----------|
| 01/01/2016 |   1     |   0   |      36     |    0    |     1     |
| 01/02/2016 |   1     | 10100 |      42     |    1    |     1     |
| ...
| 12/31/2016 |   1     | 14300 |      39     |    1    |     1     |
| 01/01/2016 |   2     | 25000 |      46     |    1    |     3     |
| 01/02/2016 |   2     | 23700 |      43     |    1    | …
Run Code Online (Sandbox Code Playgroud)

time-series neural-network lstm keras recurrent-neural-network

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

了解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
查看次数