训练mxnet:mx.mlp

时间:2017-11-13 14:19:04

标签: r mxnet

我试图用ND Lewis重现一个例子:神经网络用R进行时间序列预测。如果我包含设备参数我得到错误:

Error in mx.opt.sgd(...) : 
  unused argument (device = list(device = "cpu", device_id = 0, device_typeid = 1))
In addition: Warning message:
In mx.model.select.layout.train(X, y) :
  Auto detect layout of input matrix, use rowmajor..

如果我删除此参数,我仍会收到此警告:

Warning message:
In mx.model.select.layout.train(X, y) :
  Auto detect layout of input matrix, use rowmajor..

代码是:

library(zoo)
library(quantmod)
library(mxnet)

# data
data("ecoli", package = "tscount")
data <- ecoli$cases
data <- as.zoo(ts(data, start = c(2001, 1), end = c(2013, 20), frequency = 52))
xorig <- do.call(cbind, lapply((1:4), function(x) as.zoo(Lag(data, k = x))))
xorig <- cbind(xorig, data) 
xorig <- xorig[-(1:4), ]

# normalization
range_data <- function(x) {
  (x - min(x))/(max(x) - min(x))
}
xnorm <- data.matrix(xorig)
xnorm <- range_data(xnorm)

# test/train
y <- xnorm[, 5]
x <- xnorm[, -5]
n_train <- 600
x_train <- x[(1:n_train), ]
y_train <- y[(1:n_train)]
x_test <- x[-(1:n_train), ]
y_test <- y[-(1:n_train)]

# mxnet:
mx.set.seed(2018) 
model1 <- mx.mlp(x_train,
                 y_train,
                 hidden_node = c(10, 2),
                 out_node = 1,
                 activation = "sigmoid",
                 out_activation = "rmse",
                 num.round = 100,
                 array.batch.size = 20, 
                 learning.rate = 0.07,
                 momentum = 0.9
                 #, device = mx.cpu()
)
pred1_train <- predict(model1, x_train, ctx = mx.cpu())

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

关于第二条警告消息,MXNet正在尝试根据您输入的形状检测行/列主要内容:https://github.com/apache/incubator-mxnet/blob/424143ac47ab3a38ae8aedaeb3319379887de0bc/R-package/R/model.R#L329

对于未使用的参数device = mx.cpu(),参数名称是否应更正为ctx而不是device