sgp667
sgp667

Reputation: 1875

MXnet odd error

This is my first ANN so I imagine that there might be a lot of things done wrong here. I don't follow

I'm trying to predict species of flowers from iris data set provided in R language but I get following error:

Error in `dimnames<-.data.frame`(`*tmp*`, value = list(n)) : 
invalid 'dimnames' given for data frame

My code:

require(mxnet)

train <- iris[1:130,]
test  <- iris[131:150,]

train.data <- as.data.frame(train[-5])
train.label <- data.frame(model.matrix(data=train,object =~Species-1))


test.data <- as.data.frame(test[-5])
test.label <- data.frame(model.matrix(data=test,object =~Species-1))


var1 <- mx.symbol.Variable("data")

layer0 <- mx.symbol.FullyConnected(var1, num.hidden=3)
cat.out <- mx.symbol.SoftmaxOutput(layer0)


net.model <- mx.model.FeedForward.create(cat.out,
                                     array.layout = "auto",
                                     X=train.data, 
                                     y=train.label,
                                     eval.data = list(data=test.data,label=test.label),
                                     num.round = 20, 
                                     array.batch.size = 20,
                                     learning.rate=0.1,
                                     momentum=0.9,
                                     eval.metric = mx.metric.accuracy)

UPDATE:

I managed to get rid of this error by specifying column to use in labels(traning.label[,1]and test.label[,1]).

However now I'm training my net to predict just one of my binary variables while I have 3 (one for each species).

Upvotes: 0

Views: 825

Answers (2)

Nikhil Gupta
Nikhil Gupta

Reputation: 1486

I had a similar problem but during the prediction step. It turns out that my features were in a Data Frame which was causing the issue. Once I converted the data frame into a matrix, the issue went away.

pred.values = stats::predict(model,as.matrix(features)) 

instead of

pred.values = stats::predict(model,features) 

So, the features need to be a matrix both during training and during the process of making predictions.

Upvotes: 0

AliSh
AliSh

Reputation: 77

I had the same problem, turned out that: train.data should be a matrix train.label should be a numeric vector Check these two and hopefully it should work.

Upvotes: 1

Related Questions