このエラーの意味を教えていただけませんか?

764 views
Skip to first unread message

モグ

unread,
Dec 1, 2020, 8:23:40 PM12/1/20
to Neural Network Console Users (JP)
いつも初歩ですみません。
このエラーの意味と対処方法を教えていただけませんか?

Failed `inputs[0]->size(base_axis_) == shape_weights[0]`: Size of input data(inputs[0]) and weights(inputs[1]) mismatch. size of input: 22 != size of weights: 11.

後藤和也

unread,
Dec 1, 2020, 9:27:41 PM12/1/20
to Neural Network Console Users (JP)
あるレイヤーの出力と、それを受け取る次のレイヤーの入力で、サイズ違いがある、ということだと思います。

エラーメッセージからは、どのレイヤーが該当するかわかりませんので、
サイズが、11や22となっているレイヤーで原因を探す必要があります。

2020年12月2日水曜日 10:23:40 UTC+9 モグ:

モグ

unread,
Dec 2, 2020, 8:07:56 AM12/2/20
to Neural Network Console Users (JP)
ありがとうございます。

色々変えては見ましたがエラーは出ます。
これで何か分るでしょうか?
よろしくお願いします。

Main.JPG
Runtime.JPG

後藤和也

unread,
Dec 2, 2020, 7:41:53 PM12/2/20
to Neural Network Console Users (JP)
RuntimeネットワークのConcatenateで出力が22になっていますが、その後のレイヤーの入力は11ですね。

ネットワークの意図がわからないので、どう修正すればよいかわかりませんが、
少なくとも、22の出力を何らかの方法で11にする、もしくは、
Concatenate以外のレイヤーに変更して、シェイプが変わらないようにする必要があると思います。

2020年12月2日水曜日 22:07:56 UTC+9 モグ:
ありがとうございます。

色々変えては見ましたがエラーは出ます。
これで何か分るでしょうか?
よろしくお願いします。

モグ

unread,
Dec 2, 2020, 10:54:11 PM12/2/20
to Neural Network Console Users (JP)
ありがとうございます。

サンプルプロジェクトの「long_short_term_memory(LSTM).sdcproj」を基に時系列データ用に作り替えもしたものなのです。
そこでもConcatenateはこのようにもなってもいましたし、
どこをどのように変えれば良いのかも分かってもいないとこもあります。

 

後藤和也

unread,
Dec 3, 2020, 7:41:30 PM12/3/20
to Neural Network Console Users (JP)
失礼しました。

次のレイヤーは全部Affineでしたね。
私の回答は全くの的外れでしたので、流してください。

RNNはまだ理解していないので、ネットワークの構造に関して、現時点では意見できないのですが、ただ、RuntimeネットワークにMainにはないレイヤーでWeightを持つもの(ForgetGate, OutputGate)があるようです。
これらのWeightなどは、何を利用しているのですか?別で学習した結果だと思うのですが、そのあたりで、シェイプの違いなどは出ていないでしょうか?

なにか手がかりになれば・・・
2020年12月3日木曜日 12:54:11 UTC+9 モグ:
Message has been deleted

モグ

unread,
Dec 4, 2020, 4:03:09 AM12/4/20
to Neural Network Console Users (JP)
お世話になります。
実は、分らぬままに時系列に作り替えもしたものを、何度も自動最適化も繰り返している内にそのようにもなってしまったようです。
気づかぬこととて申し訳ありませんでした。
改めて作り直しもしたのですが、今度はこのようなメッセが出てもしまいます。
何かお気づきの点などありましたらよろしくお願いします。
 ------------------------------
    <省略>
  File "C:\****\SNNC_program\Ver1.9.0\neural_network_console_190\libs\Python\lib\site-packages\nnabla\utils\network.py", line 84, in forward_function
    func.variable_inputs, func.variable_outputs)
  File "function.pyx", line 199, in nnabla.function.Function.forward
RuntimeError: memory error in nbla::Memory::alloc
C:\ga\_work\sDeepConsolePrototype\sDeepConsolePrototype\nnabla\src\nbla\memory\memory.cpp:38
Failed `this->alloc_impl()`: class nbla::CudaMemory allocation failed.
(null)
Main.JPG
Runtime.JPG

A_Wada

unread,
Dec 4, 2020, 4:36:34 AM12/4/20
to Neural Network Console Users (JP)
私も初心者なので、分かる範囲で。
11個の数値データが600(時系列)あるとすれば、データは 600,1,11(この場合、データセットのxはx__0〜x__599に設定) として入力 あるいは、600,11の入力をReshapeで600,1,11に変換して、RecurrentInputのAxisを1にすればよいと思います。

11から22になってエラーがですのは、1次元データとしてそのまま足しているから。
Affineでは現データ11個と前の処理から送られた11個のデータを2次元で扱う設定にします。

上記の条件(Input)で作成したMainの画像を添付します。
うまくいけば幸いです。

2020年12月4日金曜日 18:03:09 UTC+9 モグ:
スクリーンショット 2020-12-04 18.25.19.png

モグ

unread,
Dec 4, 2020, 10:21:28 PM12/4/20
to Neural Network Console Users (JP)
画像の添付もいただきありがとうございます。

早速試しもしたのですが、教えてもいただきましたReshapeの説明を翻訳で開きますと
『「[形状変更] を選択すると、配列の形状が指定した図形に変換されます。』ともなりますし、
多分その図形に変換もされてるかのような現象も見受けたりもします。

それとRecurrentInputのAxis は、やはり1にすべきなのでしょうか?

よろしくお願いします。

2020年12月4日金曜日 18:36:34 UTC+9 A_Wada:

A_Wada

unread,
Dec 4, 2020, 11:43:05 PM12/4/20
to Neural Network Console Users (JP)
まず質問させてください。
入力データは、11個の数値、600時系列で正しいでしょうか。

データセットが正しく作成されているか確認ください。
時系列データは、各時間毎にcsvファイルで個別に作成する必要があります。
このあたりは、下で紹介するサイトを参照ください。

reshape はデータの配列(形状 shape)を変更(再変換 :再= re-)するレイヤーです。
1次元 = 数値 数字を繋げたもの 1行 1,2,3,4,5
2次元 = 行列 行を繋げたもの 位置情報を持つ
3次元 = 行列を重ねたもの: 画像に使用可能 この場合:カラー情報(グレースケールなら1、カラーなら3(R,G,B))と各ピクセル(座標)の輝度値 
 これらは相互に変換可能です。Affine では多次元のデータを1列の数字データに変換してしまうので、位置情報が無くなります。
 2次元データはグレースケールの画像としても扱うことができます。

例えば、0,1,2,3,4,5,6,7のデータ(データ数8)はreshapeで(2,2,2)に変更できます。これは2x2の行列が2層になっていると理解ください。
画像(図形)も数値(ピクセル値とカラー情報)の行列データです。

RecurrenrtInput のAxis は時系列の数、1,600,11 の場合時系列の600(確認ください)に相当する次元(0,1,2)の2番目の1を指定しています。

私の説明では、不十分だと思いますので、時系列を扱うのに参考になるサイトを御紹介します。
管理人様、転載が不適切であれば削除ください

2020年12月5日土曜日 12:21:28 UTC+9 モグ:

モグ

unread,
Dec 5, 2020, 2:34:56 AM12/5/20
to Neural Network Console Users (JP)
お手数をおかけし申し訳ありません。

自慢をする分けでもないですが本当に素人です。
でも、それでも何とか動かせるのがこのNeural Network Console、
実に有難いことだと思ってもいますし、こうして教えてもいただけることにも只々感謝です。

さて、入力データですが、Excelで言えば1行に例えば1日分の各項目の数値データが11個、
それが600列、即ち600日分あり、その11×600のものが数千もある、と言った構成にもなっています。

ちなみにその基本は↓を参考に作ってもいますが、もしかしたら当LSTMには相応しくないのかもしれません。
    SONY Neural Network Consoleで日経平均株価をディープラーニング

2020年12月5日土曜日 13:43:05 UTC+9 A_Wada:

A_Wada

unread,
Dec 5, 2020, 4:35:55 AM12/5/20
to Neural Network Console Users (JP)
11x600の数値が入った csv ファイルが数千あり、ラベルが付いているということですね。
LSTMの本体部分は先日のネットワークで動くと思うのですが、どのような不具合が出るのでしょうか。

2020年12月5日土曜日 16:34:56 UTC+9 モグ:

モグ

unread,
Dec 5, 2020, 9:38:39 PM12/5/20
to Neural Network Console Users (JP)
ありがとうございます。

具体的には評価もした時に、本来あり得ない無い「rnnout」が存在もすることです。
それと、3択ですので本来は1を超えることはない「y’_0」+「y’_1」+「y’_2」の値が今のところ1を超えるものともなってることです。

よろしくお願いします。

2020年12月5日土曜日 18:35:55 UTC+9 A_Wada:
Evaluation.JPG
フォト0.jpg

A_Wada

unread,
Dec 5, 2020, 11:25:17 PM12/5/20
to Neural Network Console Users (JP)
CONFIG タブ、左のExecutor はMainruntime でしょうか? 他にのネットワークを設定しているでしょうか?

rnnout という名前をどこかにレイヤーの名前で使っていないでしょうか。

Output が1を超えているということは最終層の活性化係数に問題があると思います。0〜1の値にするならSigmoidです。
ラベルがyで1つの数値なのにy'_0、y'__1, y'__2と複数の出力があるのはOutputの設定がおかしい気がします。

LSTMの部分がうまく機能している(関連のエラーが出ていないのなら)のなら、それ以降の分類・推定層の構築・設定に問題がありそうです。

 

2020年12月6日日曜日 11:38:39 UTC+9 モグ:

モグ

unread,
Dec 6, 2020, 8:46:23 AM12/6/20
to Neural Network Console Users (JP)
ありがとうございます。

おっしゃるMainRuntimeではなかったのですが、これの基ともなった「long_short_term_memory(LSTM).sdcproj」にはRuntimeでもありそのまま使ってもいました。

他にのネットワークを設定しているかも、同様にそのままですので多分問題も無かろうとも。

rnnoutという名前のレイヤーも、同様にそのまま使ってたこともありRuntimeに存在もしてましたので早速にもそれを削除。
ExecutorもRuntimeに戻し、実行もしたところ正常にも作動はしたのですが、自動で最適化もしてる内にまたしても何故か下のようなメッセが出るような始末です。
Failed `inputs[0]->size(base_axis_) == shape_weights[0]`: Size of input data(inputs[0]) and weights(inputs[1]) mismatch. size of input: 22 != size of weights: 5.

2020年12月6日日曜日 13:25:17 UTC+9 A_Wada:

A_Wada

unread,
Dec 6, 2020, 8:58:53 AM12/6/20
to Neural Network Console Users (JP)
自動で最適化・・・ 構造探索(Structure search)のことかと思いますが、方向性が決まっているのであれば、最初はあまり使わずに自分でいくつか試してみるほうが良いような気が(私は)します。
この辺は開発者の方のコメント・サポートに委ねます。

うまく動いたネットワークを保存して、それをベースに試行錯誤。
どうしてもうまく行かなければ構造探索に頼って新しい方向性を探るか、最後に少しだけ精度を上げたいときに使うのが、よい使い方なのではと私は思っています。


2020年12月6日日曜日 22:46:23 UTC+9 モグ:

モグ

unread,
Dec 6, 2020, 11:57:59 PM12/6/20
to Neural Network Console Users (JP)
お陰で動くようにはなったのですが、今一精度はさっぱりで、これではわざわざLSTM化した意味もなく、おっしゃるようにそれをベースに試行錯誤。
しかしながら自分でのその能力すらなく、既存のサンプルやネット上にある投稿などにも頼ってる始末。
今後の進展にも期待しつつ気長に待つことにします。

色々お教えもいただきありがとうございました。

2020年12月6日日曜日 22:58:53 UTC+9 A_Wada:

小林由幸

unread,
Dec 24, 2020, 12:13:45 AM12/24/20
to Neural Network Console Users (JP)
> Failed `this->alloc_impl()`: class nbla::CudaMemory allocation failed.  

こちらのエラーについてですが、添付していただいたネットワーク構造を見ると600次元をループしているということで、
全体のネットワークとしては600層以上のニューラルネットワークになっているということになります。
恐らくこれだけ層の深いネットワークを構築しようする過程でGPUがメモリ不足に陥ったものと思われます。

時系列長を短くすることでこのエラーは回避できるかもしれません。
2020年12月7日月曜日 13:57:59 UTC+9 モグ:
Message has been deleted

モグ

unread,
Feb 26, 2021, 3:52:44 AM2/26/21
to Neural Network Console Users (JP)
ありがとうございます。
回避は出来たのですが、Python APIからの推論実行時に下記のエラーが出ます。
ご教授の程お願いします。

C:\Users\***>C:\Users\Miniconda3\python.exe C:\Users\***\SONY_NNC\a1.py
2021-02-26 17:22:11,949 [nnabla][INFO]: Initializing CPU extension...
Traceback (most recent call last):
  File "C:\Users\***\SONY_NNC\a1.py", line 38, in <module>
    graph = nnp.get_network('MainRuntime',batch_size=1)
  File "C:\Users\Miniconda3\lib\site-packages\nnabla\utils\nnp_graph.py", line 487, in get_network
    network_proto.CopyFrom(self.network_dict[name])
KeyError: 'MainRuntime'

2020年12月24日木曜日 14:13:45 UTC+9 小林由幸:

小林由幸

unread,
Jun 7, 2021, 1:07:56 AM6/7/21
to Neural Network Console Users (JP)
こちらのエラーはnnpファイル内に"MainRuntime"の名前の推論用ネットワークが存在しないために発生しているようです。

"MainRuntime"の代わりに、CONFIGタブ、ExecutorのNetworkに指定した推論用ネットワークの名前を指定するようにしするとエラーを回避できるかと思います。
過去の書き込みを拝見したところ"Runtime"という名称の推論用ネットワークを別途定義されているように見えますので、"MainRuntime"の代わりに"Runtime"を指定することで正しく動作するかもしれません。

2021年2月26日金曜日 17:52:44 UTC+9 モグ:

モグ

unread,
Jun 12, 2021, 3:14:24 AM6/12/21
to Neural Network Console Users (JP)
お手数をおかけいたしました。
ご指摘の通り"MainRuntime"の代わりに"Runtime"を指定することで正しく動作もするようになりました。

Reply all
Reply to author
Forward
0 new messages