2017-11-19 1 views
0

deepnet에서 mxnet으로 코드를 변환하려고하는데 잘못된 것이 무엇인지 잘 모르겠습니다. 나는라는 오류 메시지를 받고 있어요 :sae.dnn (deepnet)에서 mx.mlp (mxnet) 오류로 변환

"Error in nn$W[[i -1]] %*% t(post)". 
requires numeric/complex matrix/vector arguments 
Calls: neural.predict -> nn.predict -> t 

(요한 C. Lotter의로 쓴) deepnet를 사용하는 코드는 다음과 같습니다

library('deepnet', quietly = T) 
library('caret', quietly = T) 

neural.train = function(model,XY) 
{ 
    XY <- as.matrix(XY) 
    X <- XY[,-ncol(XY)] 
    Y <- XY[,ncol(XY)] 
    Y <- ifelse(Y > 0,1,0) 
    Models[[model]] <<- sae.dnn.train(X,Y, 
     hidden = c(30,30,30), 
     activationfun = "tanh", 
     learningrate = 0.5, 
     momentum = 0.5, 
     learningrate_scale = 1.0, 
     output = "sigm", 
     sae_output = "linear", 
     numepochs = 100, 
     batchsize = 100, 
     hidden_dropout = 0, 
     visible_dropout = 0) 
} 

neural.predict = function(model,X) 
{ 
    if(is.vector(X)) X <- t(X) 
    return(nn.predict(Models[[model]],X)) 
} 

neural.save = function(name) 
{ 
    save(Models,file=name) 
} 

neural.init = function() 
{ 
    set.seed(365) 
    Models <<- vector("list") 
} 

그리고 mxnet 번역을 위해 내가 신경 기차를 변경하고있어 로 :

library('mxnet', quietly = T) 

neural.train = function(model,XY) 
{ 
    XY <- as.matrix(XY) 
    X <- XY[,-ncol(XY)] 
    Y <- XY[,ncol(XY)] 
    Y <- ifelse(Y > 0,1,0) 
    Models[[model]] <<- mx.mlp(X,Y, 
     hidden_node = c(30,30,30), 
     activation = "relu", 
     momentum = 0.9, 
     learning.rate = 0.07, 
     out_activation = "softmax", 
     num_round = 100, 
     out_node = 2, 
     array.batch.size = 100) 
} 

내가 .. 내가 잘못 뭐하는 거지

답변

1

을 받기 작업 코드 벨을 찾을 수없는 아야. 어떤 이유로 머신에서 작동하지 않는 경우 mxnet의 버전을 확인하십시오. 나는 mxnet 버전 0.10.1을 사용하여 Mac에서 실행 중입니다.

예제 코드처럼 코드를 복사하고 싶다고 말했기 때문에 속성 값을 초기 값으로 변경했습니다. 필요한 경우 언제든지 변경할 수 있습니다. 예를 들어 0.5의 운동량은 너무 적게 보입니다. 보통 0.9 이상의 값이 사용됩니다. 0.5의 학습 률의 값이 너무 큰 반면 일반적으로 학습 률은 0.1보다 높지 않습니다.

> neural.predict("mx_mlp_model", test.data) 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19] [,20] 
[1,] 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 
    [,21] [,22] [,23] [,24] [,25] [,26] [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38] [,39] 
[1,] 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 
    [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50] [,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] 
[1,] 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 
    [,59] [,60] [,61] [,62] [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74] [,75] [,76] [,77] 
[1,] 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 
    [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86] [,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] 
[1,] 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 0.53 
    [,97] [,98] [,99] [,100] 
[1,] 0.47 0.47 0.47 0.47 
[2,] 0.53 0.53 0.53 0.53 

는 희망이 도움이 :

library('mxnet') 

neural.train = function(model,XY) 
{ 
    XY <- as.matrix(XY) 
    X <- XY[,-ncol(XY)] 
    Y <- XY[,ncol(XY)] 
    Y <- ifelse(Y > 0,1,0) 
    Models[[model]] <<- mx.mlp(X,Y, 
          hidden_node = c(30,30,30), 
          activation = "tanh", 
          momentum = 0.5, 
          learning.rate = 0.5, 
          out_activation = "softmax", 
          num.round = 100, 
          out_node = 2, 
          array.batch.size = 100, 
          dropout = 0, 
          array.layout = "rowmajor") 
} 

neural.predict = function(model,X) 
{ 
    if(is.vector(X)) X <- t(X) 
    return(predict(Models[[model]], X, array.layout = "rowmajor")) 
} 

neural.save = function(name) 
{ 
    save(Models,file=name) 
} 

neural.init = function() 
{ 
    set.seed(365) 
    Models <<- vector("list") 
} 

Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
Var3 <- sample(c(0,1), replace=T, size=100) 
training.data <- matrix(c(Var1, Var2, Var3), nrow = 100, ncol = 3) 

Var4 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var5 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
test.data <- matrix(c(Var4, Var5), nrow = 100, ncol = 2) 


neural.init() 
neural.train("mx_mlp_model", training.data) 
neural.predict("mx_mlp_model", test.data) 

이 실행 후, 나는 다음과 같은 출력을 얻을.