質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.31%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

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

Q&A

解決済

1回答

671閲覧

重みWを複素数に定義するには?

KAltair

総合スコア43

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python 3.x

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

0グッド

0クリップ

投稿2022/02/05 07:11

前提・実現したいこと

Affine layerで出力に複素数を実装したところ、Wが定義されていないとなりました。変更したのはoutの部分だけですがエラーとなったので教えてほしく思います。コードはゼロから作るディープラーニングp152のAffineレイヤを使用しています。

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

name 'W' is not defined

該当のソースコード

Python3.8.5

1class Affine: 2 def __init__(self, W, b): 3 self.W = W 4 self.b = b 5 6 self.x = None 7 self.original_x_shape = None 8 # 重み・バイアスパラメータの微分 9 self.dW = None 10 self.db = None 11 12 def forward(self, x): 13 # テンソル対応 14 self.original_x_shape = x.shape 15 x = x.reshape(x.shape[0], -1) 16 self.x = x 17 18 out = np.dot(x.real, W.real) + 1.j * np.dot(x.imag, W.imag) + b 19 20 return out 21 22 def backward(self, dout): 23 dx = np.dot(dout, self.W.T) 24 self.dW = np.dot(self.x.T, dout) 25 self.db = np.sum(dout, axis=0) 26 27 dx = dx.reshape(*self.original_x_shape) # 入力データの形状に戻す(テンソル対応) 28 return dx

試したこと

参考が見つからず、試行錯誤してみましたが解決できませんでした。

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

Python3.8.5, google colabを使用

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

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

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

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

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

guest

回答1

0

ベストアンサー

中身は見ていませんが、

python

1 out = np.dot(x.real, W.real) + 1.j * np.dot(x.imag, W.imag) + b

python

1 out = np.dot(x.real, self.W.real) + 1.j * np.dot(x.imag, self.W.imag) + b

に変更してみてください。

投稿2022/02/05 07:25

ppaul

総合スコア24672

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

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

KAltair

2022/02/05 16:22

別の問題として for key in ('W1', 'b1', 'W2', 'b2'): network.params[key] -= learning_rate * grad[key] loss = network.loss(x_batch, t_batch) Error : Cannot cast ufunc 'subtract' output from dtype('complex128') to dtype('float64') with casting rule 'same_kind' となり、型に対しての新たなエラーが出てきました。 参考として「https://ebi-works.com/deeplearning-6/」のサイトを使用しています。
KAltair

2022/02/06 04:57

こちらの問題は解決したので別の問題が発生したものとして新しく質問させていただきます。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問