2017-06-17 26 views
1

MXNetでRNNを使用して分類を実行しようとしています。私のデータはおおよそ私が作成した行列m0とm1のように見えます。 m 0は、例えば、を表す。時間の経過に伴うデバイスのエネルギー消費量であり、m1はデバイスがどのように分類されるべきかを示すためのラベル(この場合、バイナリ)である。 私の目標は、時間の経過とともにエネルギー消費量を調べることによってデバイスのカテゴリを検出することです。 形状の不一致に関するエラーが発生し続け、入力パラメータを変更することで解決策を見つけることができません。私のコードとエラーメッセージは以下の通りです。 この問題の処理方法に関するご意見をお待ちしております。MXNでRNNを使用した形状の不一致 - R

require(mxnet) 

m0 <- matrix(runif(200*100), 100, 200) 
m1 <- matrix(round(runif(1*200)), 1, 200) 

num.round  <- 10 
update.period <- 1 
num.rnn.layer <- 1 
seq.len  <- 100 
num.hidden  <- 1 
num.embed  <- 1 
num.label  <- 1 
batch.size  <- 1 
input.size  <- 1 
learning.rate <- 0.1 

X.train <- list(data = m0, label = m1) 

model <- mx.rnn(train.data = X.train, 
       eval.data = NULL, 
       num.rnn.layer = num.rnn.layer, 
       seq.len = seq.len, 
       num.hidden = num.hidden, 
       num.embed = num.embed, 
       num.label = num.label, 
       batch.size = batch.size, 
       input.size = input.size, 
       ctx = mx.cpu(), 
       num.round = num.round, 
       update.period = update.period, 
       initializer = mx.init.uniform(0.1), 
       learning.rate = learning.rate) 

[午後04時07分02秒] D:\プログラムファイル (x86の)\ジェンキンス\ワークスペース\ mxnet \ mxnet \のsrc \オペレータ\ tensor./matrix_op-inl.h:144: をtarget_shapeの使用は推奨されません。

[16時07分02秒] D:\プログラムファイル (x86の)\ジェンキンス\ワークスペース\ mxnet \ mxnet \のsrc \演算子\のtensor./matrix_op-inl.h:144:target_shapeを使用して は廃止されます。

[16時07分02秒] D:\プログラムファイル (x86の)\ジェンキンス\ワークスペース\ mxnet \ mxnet \のsrc \演算子\のtensor./matrix_op-inl.h:144:target_shapeを使用して は廃止されます。

[16時07分02秒] D:\プログラムファイル (x86の)ジェンキンス\ワークスペース\ \ mxnet \ mxnet \ DMLCコア\ \ DMLC/logging.h含む:16 [

:304: 2900: をチェックしてください:from.shape()== to-> shape()オペランド16時07 [

: のexec $のupdate.arg.arrays(arg.arrays、match.name、skip.null)に mismatchfrom.shape =(1,1)to.shape =(1100)エラーを形作ります:02] D:¥Program Files (x86)\ Jenkins \ mxnet \ mxnet \ src \ ndarray \ ndarr ay.cc:299:==ツー>形状()オペランド形状=(1,1)to.shape =(1100)

答えて

1

理由 mismatchfrom.shapeをfrom.shape(): 失敗をチェックします。次元の不一致のために、配列長と一致しないlabelの次元を渡しています。 RNNにはシーケンスのタップごとの出力があります。したがって、長さが100の場合、タイムステップごとに1つずつ100の出力が得られます。 m1matrix(round(runif(100*200)), 100, 200)に設定することでこのエラーを修正できますが、簡略化されたmx.rnn()インターフェイスを使用して、必要な処理(つまり、シーケンス全体の1つの数値の予測)を行うことはできません。コードhereに基づいて独自のネットワークを実装する必要があります。探している単一出力を実現するには、最後の時間ステップの出力をすべて破棄し、Softmaxレイヤーを介してその出力を実行します。

関連する問題