gpt4 book ai didi

machine-learning - LSTM-RNN : How to shape multivariate Inputs

转载 作者:行者123 更新时间:2023-11-30 09:35:19 25 4
gpt4 key购买 nike

大家好,我正在努力解决 tensorflow RNN 的实现:

问题:

我想训练 RNN 的 LSTM 实现来检测 KDD99 数据集中的恶意连接。它是一个包含 41 个特征和(经过一些预处理)大小为 5 的标签向量的数据集。

[ 
[x1, x2, x3, .....x40, x41],
...
[x1, x2, x3, .....x40, x41]
]


[
[0, 1, 0, 0, 0],
...
[0, 0, 1, 0, 0]
]

作为基本架构,我想实现以下内容:

cell = tf.nn.rnn_cell.LSTMCell(num_units=64, state_is_tuple=True)
cell = tf.nn.rnn_cell.DropoutWrapper(cell=cell, output_keep_prob=0.5)
cell = tf.nn.rnn_cell.MultiRNNCell(cells=[cell] * 3, state_is_tuple=True)

我的问题是:为了将其提供给模型,我需要如何 reshape 输入特征?

我不仅需要 reshape 输入特征,还需要构建滑动窗口序列吗?

我的意思是:

假设序列长度为 10,第一个序列将包含数据点 0 - 9,第二个序列包含数据点 1 - 10、2 - 11,依此类推。

谢谢!

最佳答案

我不知道数据集,但我认为你的问题如下:你有一个很长的序列,你想知道如何塑造这个序列以便将其提供给网络。

“tf.contrib.rnn.static_rnn”具有以下签名:

tf.contrib.rnn.static_rnn(cell, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None)

哪里

inputs: A length T list of inputs, each a Tensor of shape [batch_size, input_size], or a nested tuple of such elements.

因此,需要将输入整形为列表,其中列表的每个元素都是每个时间步的输入序列的元素。

此列表的长度取决于您的问题和/或计算问题。

  • 例如,在自然语言处理中,此列表的长度可以是文档的最大句子长度,其中较短的句子将填充到该长度。在本例中,在许多领域中,序列的长度是由问题驱动的
  • 但是,您的问题可能没有此类证据,或者仍然有很长的序列。从计算的角度来看,长序列非常繁重。用于优化该模型的 BPTT 算法在具有共享参数的非常深的前馈网络中“展开”循环网络,并在其上进行反向传播。在这种情况下,将序列“剪切”到固定长度仍然很方便。

这里我们提出了您的问题,给定这个固定长度,假设为 10,我如何调整我的输入?

通常,要做的就是在非重叠窗口中剪切数据集(在您的示例中,我们将有 1-9、10-19、20-29 等。这里发生的情况是每次使用 BPTT 更新权重时,网络仅查看序列的最后 10 个元素。

但是,由于序列已被任意剪切,因此预测很可能需要利用序列中位于当前窗口之外的较远位置的证据。为此,我们使用以下参数初始化窗口 i 处 RNN 的初始状态和窗口 i-1 的最终状态:

initial_state: (optional) An initial state for the RNN.

最后,我向您提供两个来源以供您了解更多详细信息:

  1. RNN Tutorial这是tensorflow的官方教程。它应用于语言建模的任务。在代码的某一点,您将看到从一次运行到下一次运行的最终状态被馈送到网络,以实现上述内容。

    feed_dict = {}
    for i, (c, h) in enumerate(model.initial_state):
    feed_dict[c] = state[i].c
    feed_dict[h] = state[i].h
  2. DevSummit 2017这是 2017 年 Tensorflow DevSummit 期间的演讲视频,其中第一部分(读取和批处理序列数据)解释了如何以及使用哪些函数来塑造序列输入。 p>

希望这有帮助:)

关于machine-learning - LSTM-RNN : How to shape multivariate Inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com