【问题标题】:Calling CustomCSVIter function using mxnet pacakge in R在 R 中使用 mxnet 包调用自定义 CAVIty 函数
【发布时间】:2017-11-27 09:00:20
【问题描述】:

我正在尝试在字符级别训练一个文本数据集列表(例如,a cat => "a"、""、"c"、"a"、"t"),以便我可以分类他们非常准确。我在 R 中使用 mxnet 包(CNN 网络)并使用可丽饼模型。所以为了准备训练,我需要对训练和测试数据集进行迭代。所以代码如下:

train.iter <- CustomCSVIter$new(iter=NULL, data.csv=train.file.output, 
                            batch.size=args$batch_size, alphabet=alphabet,
                            feature.len=feature.len)  
test.iter <- CustomCSVIter$new(iter=NULL, data.csv=test.file.output, 
                           batch.size=args$batch_size, alphabet=alphabet, 
                           feature.len=feature.len)

data.csv 我有这些数据集,batch.size 只是一个整数,feature.len 也只是一个整数,字母表是字母数字引号的向量(abcd ...?!“”)。当我运行上面的代码时,我收到一条消息,说我有一个致命错误,Rstudio 崩溃并重新加载。我不知道我做错了什么。要运行上述代码,需要以下函数:

CustomCSVIter <- setRefClass("CustomCSVIter",
                         fields=c("iter", "data.csv", "batch.size",
                                  "alphabet","feature.len"),
                         contains = "Rcpp_MXArrayDataIter",
                         methods=list(
                           initialize=function(iter, data.csv, batch.size,
                                               alphabet, feature.len){
                             csv_iter <- mx.io.CSVIter(data.csv=data.csv, 
                                                       data.shape=feature.len+1, #=features + label
                                                       batch.size=batch.size)
                             .self$iter <- csv_iter 
                             .self$data.csv <- data.csv
                             .self$batch.size <- batch.size
                             .self$alphabet <- alphabet
                             .self$feature.len <- feature.len
                             .self
                           },
                           value=function(){
                             val <- as.array(.self$iter$value()$data)
                             val.y <- val[1,]
                             val.x <- val[-1,]
                             val.x <- dict.decoder(data=val.x, 
                                                   alphabet=.self$alphabet,
                                                   feature.len=.self$feature.len,
                                                   batch.size=.self$batch.size)
                             val.x <- mx.nd.array(val.x)
                             val.y <- mx.nd.array(val.y)
                             list(data=val.x, label=val.y)
                           },
                           iter.next=function(){
                             .self$iter$iter.next()
                           },
                           reset=function(){
                             .self$iter$reset()
                           },
                           num.pad=function(){
                             .self$iter$num.pad()
                           },
                           finalize=function(){
                             .self$iter$finalize()
                           }
                         )

)

【问题讨论】:

    标签: r deep-learning conv-neural-network mxnet


    【解决方案1】:

    当输入文件的形状与迭代器的 data.shape 参数不匹配时,通常会出现这样的问题。

    您可以通过在 RStudio 之外运行代码来轻松检查这是否是问题所在。从终端/命令行运行 R 并将您的代码粘贴到那里。当异常发生时,它将终止 R 会话,您将能够阅读异常消息。就我而言,它是:

    Check failed: row.length == shape.Size() (2 vs. 1) The data size in CSV do not match size of shape: specified shape=(1,), the csv row-length=2

    在你的情况下,它可能是类似的。 顺便说一句,MNIST 数据集有一个自定义迭代器的实现,您可能会发现它很有用:https://github.com/apache/incubator-mxnet/issues/4105#issuecomment-266190690

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2020-09-08
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      相关资源
      最近更新 更多