【发布时间】:2018-08-01 18:29:51
【问题描述】:
我的数据不是时间序列,但它具有顺序属性。
考虑一个示例:
data1 = matrix(rnorm(10, 0, 1), nrow = 1)
label1 = rnorm(1, 0, 1)
label1 是 data1 的函数,但数据矩阵不是时间序列。我认为标签不仅仅是一个数据样本的函数,而是更多旧样本的函数,这些样本在时间上自然排序(不是随机采样),换句话说,数据样本是相互依赖的。
我有一批例子,比如 16 个。
我想了解如何设计一个 RNN/LSTM 模型,该模型将记住批处理中的所有 16 个示例以构建内部状态。我对seq_len 参数感到特别困惑,据我所知,该参数专门用于作为网络输入的时间序列的长度,事实并非如此。
现在这段代码(取自时间序列示例)只会让我感到困惑,因为我看不出我的任务如何适应。
rm(symbol)
symbol <- rnn.graph.unroll(seq_len = 5,
num_rnn_layer = 1,
num_hidden = 50,
input_size = NULL,
num_embed = NULL,
num_decode = 1,
masking = F,
loss_output = "linear",
dropout = 0.2,
ignore_label = -1,
cell_type = "lstm",
output_last_state = F,
config = "seq-to-one")
graph.viz(symbol, type = "graph", direction = "LR",
graph.height.px = 600, graph.width.px = 800)
train.data <- mx.io.arrayiter(
data = matrix(rnorm(100, 0, 1), ncol = 20)
, label = rnorm(20, 0, 1)
, batch.size = 20
, shuffle = F
)
【问题讨论】:
-
您能否提供有关您的数据的更多信息?这是否意味着 [data1, ... , data16] -> label1 和 [data2, ..., data17] -> label2?
-
@Sergei,谢谢你的回复。你写的是对的。 “数据”序列后跟一个标量标签。我自己几乎想通了。 data1, data2, ... data16 是多维时间序列的时间步长(维度是 20)。我只是在这种时间序列上训练 LSTM。