2017-06-06 5 views
0

MXNetRでフィードフォワードニューラルネットワークを構築しようとしています。私の入力は、6380行と180列のデータフレームです。私のトレーニングとテストの出力は、それぞれ319要素の1次元ベクトルです。MXNetRを実行しているときにデータシェイプに関連するエラー

バッチサイズを1に設定し、出力レイヤーのニューロン数を319に設定してモデルを実行します。したがって、各バッチについて、319要素のベクトルを取得することが期待されます。予測された出力ベクトルと実際の出力ベクトルとの相関関係である損失関数を最小限に抑えることを目指します。私はこのエラーを修正する方法について無知だ、現時点では

[15:49:28] /home/cgagnon/src/q5/mxnet/dmlc-core/include/dmlc/./logging.h:304: [15:49:28] src/operator/./correlation-inl.h:176: Check failed: dshape1.ndim() == 4U (2 vs. 4) data should be a 4D tensor 

Stack trace returned 10 entries: 
[bt] (0) /usr/lib64/R/library/mxnet/libs/libmxnet.so(_ZN4dmlc15LogMessageFatalD1Ev+0x29) [0x7f725a8528b9] 
[bt] (1) /usr/lib64/R/library/mxnet/libs/libmxnet.so(_ZNK5mxnet2op15CorrelationProp10InferShapeEPSt6vectorIN4nnvm6TShapeESaIS4_EES7_S7_+0x2a2) [0x7f725b4a8222] 
[bt] (2) /usr/lib64/R/library/mxnet/libs/libmxnet.so(+0xd461f9) [0x7f725b3241f9] 
[bt] (3) /usr/lib64/R/library/mxnet/libs/libmxnet.so(+0x116630f) [0x7f725b74430f] 
[bt] (4) /usr/lib64/R/library/mxnet/libs/libmxnet.so(+0x1167bb2) [0x7f725b745bb2] 
[bt] (5) /usr/lib64/R/library/mxnet/libs/libmxnet.so(_ZN4nnvm11ApplyPassesENS_5GraphERKSt6vectorISsSaISsEE+0x501) [0x7f725b761481] 
[bt] (6) /usr/lib64/R/library/mxnet/libs/libmxnet.so(_ZN4nnvm9ApplyPassENS_5GraphERKSs+0x8e) [0x7f725b699f2e] 
[bt] (7) /usr/lib64/R/library/mxnet/libs/libmxnet.so(_ZN4nnvm4pass10InferShapeENS_5GraphESt6vectorINS_6TShapeESaIS3_EESs+0x240) [0x7f725b69c520] 
[bt] (8) /usr/lib64/R/library/mxnet/libs/libmxnet.so(MXSymbolInferShape+0x281) [0x7f725b6959a1] 
[bt] (9) /usr/lib64/R/library/mxnet/libs/mxnet.so(_ZNK5mxnet1R6Symbol10InferShapeERKN4Rcpp6VectorILi19ENS2_15PreserveStorageEEE+0x6b9) [0x7f724cef6739] 

以下は私のコードです:

# Define the input data 
    data <- mx.symbol.Variable("data") 

    # Define the first fully connected layer 
    fc1 <- mx.symbol.FullyConnected(data, num_hidden = 100) 
    act.fun <- mx.symbol.Activation(fc1, act_type = "relu") # create a hidden layer with Rectified Linear Unit as its activation function. 
    output <<- mx.symbol.FullyConnected(act.fun, num_hidden = 319) 

    # Customize loss function 
    label <- mx.symbol.Variable("label") 
    lro <- 
     mx.symbol.MakeLoss(mx.symbol.Correlation(mx.symbol.reshape(output 
    ,shape = (1,319)),label)) 

    model <- mx.model.FeedForward.create(symbol=lro, X=train.x, 
             y=train.y, 
             eval.data = list(data = test.x, 
                 label = test.y), 
             num.round=5000, 
             array.batch.size=1, 
             optimizer = "adam", 
             learning.rate = 0.0003, 
             eval.metric = mx.metric.rmse, 
             epoch.end.callback = 
             mx.callback.log.train.metric(20, logger)) 

そして、ここで私は上記のコードを実行すると、エラーです。私は自分のデータセットを変形して4Dテンソルであるが、何も見つけられないようにする方法を模索してきた。私は私の問題に対する明白な解決策を探すつもりはありませんが、このエラーにどのように取り組むべきかについての提案は非常に高く評価されます。

答えて

0

データがなければ問題を再現できませんでしたが、データセットを4Dテンソルに変更するだけの場合は、 によって行うことができます。 "symbol.reshape(出力、シェイプ= c( 1,1,1,319))」。 それがあなたに役立つかどうかはわかりません。

+0

提案したとおりにコードを変更しましたが、同じ種類のエラーが表示されます。プライバシーの理由により、データセットをあなたと共有することはできませんが、エラーはコンテンツではなくデータセットの次元にあると考えています。 – nnguyen24

関連する問題