r [和Y]的rnn.trainr时间维度

时间:2017-06-26 07:07:11

标签: r recurrent-neural-network

参考:https://github.com/bquast/rnn

根据文档,X和Y变量应为:

  

用法

trainr(Y, X, learningrate, learningrate_decay = 1, momentum = 0,
  hidden_dim = c(10), network_type = "rnn", numepochs = 1,
  sigmoid = c("logistic", "Gompertz", "tanh"), use_bias = F,
  batch_size = 1, seq_to_seq_unsync = F, update_rule = "sgd",
  epoch_function = c(epoch_print, epoch_annealing), loss_function = loss_L1,
...)
     

参数

     

Y - 输出值数组,dim 1:samples(必须等于dim 1)   X),dim 2:时间(必须等于X的dim 2),dim 3:变量(可以   是1或更多,如果矩阵,将强制到阵列)
  X - 数组   输入值,昏暗1:样本,暗淡2:时间,暗淡3:变量(可能是   1或更多,如果矩阵,将强制到数组)创建3d数组:昏暗   1:样品;昏暗的2:时间;昏暗3:变量

我真的不明白给出的例子

X1 = sample(0:127, 7000, replace=TRUE)
X2 = sample(0:127, 7000, replace=TRUE)
# create training response numbers
Y <- X1 + X2

# convert to binary
X1 <- int2bin(X1, length=8)
X2 <- int2bin(X2, length=8)
Y  <- int2bin(Y,  length=8)

# create 3d array: dim 1: samples; dim 2: time; dim 3: variables
X <- array( c(X1,X2), dim=c(dim(X1),2) )

# train the model
model <- trainr(Y=Y,
            X=X,
            learningrate   =  0.1,
            hidden_dim     = 10   )

任何人都可以解释 &#39; dim 2:time&#39; X和Y数组的维度

1 个答案:

答案 0 :(得分:0)

我敢肯定,鉴于帖子的年代久远,您已经明白了这一点,但是我也发现文档令人困惑,并希望为其他搜索更多内容的人提供答案。

示例代码接受两个输入,并将它们转换为8位序列。这两个8位序列是模型中的特征,Y是您要预测的(这很容易,因为它是总和的8位版本)。

RNN用于预测一段时间内的结果,因此数据的每一行代表时间的下一步。在示例中有5000行,每行具有2个深度为8位的特征。因此,该函数正在寻找的是一个数组,数组为5000 * 8 * 2,对2个深度为8位的变量进行5000次观察。目标(Y)没有任何特征,因此其尺寸为5000 * 8 * 2

如果您习惯于处理R data.frames,则将第二维称为时间维会非常混乱,但是如果您测试示例代码,则很明显,这就是函数所需要的。

希望这对...有所帮助。