🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

893閲覧

pythonのchainerにおいて層を増やすと出力が合わなくなる

maru-ichi

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/12/23 02:59

前提・実現したいこと

chainerを用いて機械学習のモデルを弄っているのですが,
層を増やしただけで出力の次元がずれる?みたいです.

エラー内容は理解できますが, なぜこのようなエラーを吐くのか全く分かりません.

アドバイスまたは情報だけでも頂けると幸いです.

発生している問題・エラーメッセージ

ValueError: could not broadcast input array from shape (1024) into shape (17)

修正前のソースコード

python

1 with self.init_scope(): 2 self.l1 = L.Linear(n_in, n_unit, initialW=w) 3 self.l2 = L.Linear(n_unit, n_unit, initialW=w) 4 self.l3 = L.Linear(n_unit, n_unit, initialW=w) 5 self.l4 = L.Linear(n_unit, n_out, initialW=w) 6 7 if self.use_bn: 8 self.bn1 = L.BatchNormalization(n_unit) 9 self.bn2 = L.BatchNormalization(n_unit) 10 self.bn3 = L.BatchNormalization(n_unit) 11 12def __call__(self, x): 13 if self.use_bn: 14 h1 = self.activate_func(self.bn1(self.l1(x))) 15 h2 = self.activate_func(self.bn2(self.l2(h1))) 16   h3 = self.activate_func(self.bn3(self.l3(h2)) + h1) 17  else: 18 h1 = self.activate_func(self.l1(x)) 19 h2 = self.activate_func(self.l2(h1)) 20 h3 = self.activate_func(self.l3(h2) + h1) 21 return self.l4(h3) 22 23```### 修正後のソースコード 24 25```python 26 with self.init_scope(): 27 self.l1 = L.Linear(n_in, n_unit, initialW=w) 28 self.l2 = L.Linear(n_unit, n_unit, initialW=w) 29 self.l3 = L.Linear(n_unit, n_unit, initialW=w) 30 self.l4 = L.Linear(n_unit, n_unit, initialW=w) 31 self.l5 = L.Linear(n_unit, n_out, initialW=w) 32 33 if self.use_bn: 34 self.bn1 = L.BatchNormalization(n_unit) 35 self.bn2 = L.BatchNormalization(n_unit) 36 self.bn3 = L.BatchNormalization(n_unit) 37 38def __call__(self, x): 39 if self.use_bn: 40 h1 = self.activate_func(self.bn1(self.l1(x))) 41 h2 = self.activate_func(self.bn2(self.l2(h1))) 42 h3 = self.activate_func(self.bn3(self.l3(h2)) + h1) 43 else: 44 h1 = self.activate_func(self.l1(x)) 45 h2 = self.activate_func(self.l2(h1)) 46 h3 = self.activate_func(self.l3(h2)) 47 h4 = self.activate_func(self.l4(h3) + h1) 48 return self.l5(h4)

補足情報(FW/ツールのバージョンなど)

修正前後ともn_in, n_unit, n_outの値は同じになっています.
ログを見る限り間違いなさそうです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。。

投稿2019/12/24 06:03

maru-ichi

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問