MXnet奇怪的错误

时间:2017-03-01 01:50:09

标签: r mxnet

这是我的第一个人工智能,所以我想这里可能会有很多错误。我不遵循

我正在尝试使用R语言中提供的Error in `dimnames<-.data.frame`(`*tmp*`, value = list(n)) : invalid 'dimnames' given for data frame 数据集预测花的种类,但我收到以下错误:

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)

我的代码:

traning.label[,1]

更新:

我设法通过指定要在标签中使用的列(test.label[,1]protected void onActivityResult(int requestCode, int resultCode, Intent data) { selectedImageUri = null; switch (requestCode) { case PICK_IMAGE: if (resultCode == Activity.RESULT_OK) { selectedImageUri = data.getData(); imagepath = getPath(selectedImageUri); launchUploadActivity2(true); Bitmap bitmap=BitmapFactory.decodeFile(imagepath); iv.setImageBitmap(bitmap); Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_SHORT).show(); } break; case PICK_Camera_IMAGE: if (resultCode == RESULT_OK) { //use imageUri here to access the image selectedImageUri = imageUri; imagepath2=selectedImageUri.getPath(); launchUploadActivity(true); Bitmap bitmap=BitmapFactory.decodeFile(imagepath2); iv.setImageBitmap(bitmap); Log.d(TAG,selectedImageUri.toString()); Toast.makeText(this, selectedImageUri.toString(), Toast.LENGTH_SHORT).show(); } else if (resultCode == RESULT_CANCELED) { Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, "Picture was not taken", Toast.LENGTH_SHORT).show(); } break; } )来摆脱此错误。

然而现在我正在训练我的网络来预测我的二元变量之一,而我有3个(每个物种一个)。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,结果是: train.data应该是一个矩阵 train.label应该是一个数字向量 检查这两个,希望它可以工作。

答案 1 :(得分:0)

在预测步骤中,我遇到了类似的问题。事实证明,我的功能位于导致问题的数据框架中。将数据框转换为矩阵后,问题就消失了。

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

代替

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

因此,无论是在训练期间还是在进行预测的过程中,特征都必须是矩阵。