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

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

新規登録して質問してみよう
ただいま回答率
85.48%
PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

Q&A

0回答

638閲覧

pytorch tensor.norm 挙動がわからない

Lizard_knight

総合スコア18

PyTorch

PyTorchは、オープンソースのPython向けの機械学習ライブラリ。Facebookの人工知能研究グループが開発を主導しています。強力なGPUサポートを備えたテンソル計算、テープベースの自動微分による柔軟なニューラルネットワークの記述が可能です。

Python 3.x

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

0グッド

0クリップ

投稿2019/10/08 14:34

編集2019/10/08 14:41

pytorch の tensor.normをnumpy配列に変換したい

pytorchのtensor.normをnumpy配列に変換したいのですが、tensor.normの挙動がわかりません。
そもそもpytorchのソースコードをchainerに移植したいがため、tensorデータをnumpy配列に変換したいと考えています。
torch.norm(1,3)という処理をnumpy.ndarrayのデータ型の処理ではどう変換するにはどうしたらいいですか?

発生している問題

Exception in main training loop: 'numpy.ndarray' object has no attribute 'norm' Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/chainer/training/trainer.py", line 316, in run update() File "/usr/local/lib/python3.5/dist-packages/chainer/training/updaters/standard_updater.py", line 175, in update self.update_core() File "/usr/local/lib/python3.5/dist-packages/chainer/training/updaters/standard_updater.py", line 187, in update_core optimizer.update(loss_func, *in_arrays) File "/usr/local/lib/python3.5/dist-packages/chainer/optimizer.py", line 800, in update loss = lossfun(*args, **kwds) File "/usr/local/lib/python3.5/dist-packages/chainer/link.py", line 294, in __call__ out = forward(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/chainer/links/model/classifier.py", line 143, in forward self.y = self.predictor(*args, **kwargs) File "/home/twn/model.py", line 121, in __call__ x = self.conv1(x) File "/usr/local/lib/python3.5/dist-packages/chainer/link.py", line 294, in __call__ out = forward(*args, **kwargs) File "/home/twn/model.py", line 86, in forward self.W.data = Ternarize(self.W.data) File "/home/twn/model.py", line 32, in Ternarize output = np.zeros(tensor.shape) File "/home/twn/model.py", line 68, in Delta delta = 0.7 * tensor.norm(1,3).sum(2).sum(1).div(n) Will finalize trainer extensions and updater before reraising the exception. Traceback (most recent call last): File "train_mnist.py", line 133, in <module> main() File "train_mnist.py", line 125, in main trainer.run() File "/usr/local/lib/python3.5/dist-packages/chainer/training/trainer.py", line 349, in run six.reraise(*exc_info) File "/usr/local/lib/python3.5/dist-packages/six.py", line 693, in reraise raise value File "/usr/local/lib/python3.5/dist-packages/chainer/training/trainer.py", line 316, in run update() File "/usr/local/lib/python3.5/dist-packages/chainer/training/updaters/standard_updater.py", line 175, in update self.update_core() File "/usr/local/lib/python3.5/dist-packages/chainer/training/updaters/standard_updater.py", line 187, in update_core optimizer.update(loss_func, *in_arrays) File "/usr/local/lib/python3.5/dist-packages/chainer/optimizer.py", line 800, in update loss = lossfun(*args, **kwds) File "/usr/local/lib/python3.5/dist-packages/chainer/link.py", line 294, in __call__ out = forward(*args, **kwargs) File "/usr/local/lib/python3.5/dist-packages/chainer/links/model/classifier.py", line 143, in forward self.y = self.predictor(*args, **kwargs) File "/home/twn/model.py", line 121, in __call__ x = self.conv1(x) File "/usr/local/lib/python3.5/dist-packages/chainer/link.py", line 294, in __call__ out = forward(*args, **kwargs) File "/home/twn/model.py", line 86, in forward self.W.data = Ternarize(self.W.data) File "/home/twn/model.py", line 32, in Ternarize output = np.zeros(tensor.shape) File "/home/twn/model.py", line 68, in Delta delta = 0.7 * tensor.norm(1,3).sum(2).sum(1).div(n) AttributeError: 'numpy.ndarray' object has no attribute 'norm'

該当のソースコード

python3

1def Delta(tensor): 2 n = tensor[0].size 3 4 ### kokokara 5 if(len(tensor.shape) == 4): #convolution layer 6 delta = 0.7 * tensor.norm(1,3).sum(2).sum(1).div(n) 7 elif(len(tensor.shape) == 2): #fc layer 8 delta = 0.7 * tensor.norm(1,1).div(n) 9 return delta

試したこと

print(torch.norm(1,3)) tensor([[[0.4926, 0.3223, 0.1846, 0.4800, 0.7103]], [[0.7363, 0.3522, 0.7073, 0.2541, 0.4809]], [[0.5639, 0.5595, 0.5163, 0.6157, 0.5934]], [[0.4394, 0.5042, 0.2208, 0.5893, 0.4093]], [[0.5786, 0.4757, 0.6647, 0.4148, 0.5607]], [[0.6101, 0.5895, 0.4671, 0.3420, 0.6011]], [[0.3711, 0.7060, 0.5985, 0.4870, 0.5184]], [[0.6579, 0.6338, 0.5116, 0.5239, 0.5478]], [[0.5878, 0.6335, 0.5059, 0.3094, 0.4766]], [[0.5310, 0.5487, 0.2004, 0.5366, 0.5692]], [[0.7885, 0.4017, 0.6187, 0.3296, 0.1741]], [[0.8681, 0.7011, 0.4319, 0.5387, 0.4889]], [[0.4878, 0.3948, 0.4182, 0.4235, 0.4727]], [[0.3291, 0.5060, 0.6954, 0.4702, 0.7384]], [[0.5221, 0.4326, 0.6694, 0.5442, 0.5455]], [[0.5701, 0.5102, 0.3249, 0.4733, 0.5535]], [[0.5284, 0.5153, 0.4548, 0.5764, 0.4006]], [[0.5607, 0.6280, 0.6552, 0.5272, 0.5736]], [[0.5310, 0.4631, 0.4940, 0.5698, 0.5756]], [[0.6822, 0.4891, 0.5526, 0.5889, 0.3975]], [[0.4742, 0.5606, 0.1695, 0.6110, 0.4578]], [[0.5681, 0.6335, 0.4142, 0.6283, 0.5202]], [[0.3707, 0.5130, 0.3380, 0.5612, 0.6171]], [[0.4762, 0.7896, 0.4459, 0.5189, 0.5165]], [[0.3796, 0.3661, 0.4132, 0.7394, 0.2711]], [[0.4367, 0.5497, 0.2152, 0.2984, 0.4886]], [[0.3285, 0.3650, 0.6961, 0.6075, 0.4263]], [[0.3891, 0.4031, 0.1322, 0.6820, 0.5218]], [[0.4764, 0.5367, 0.2300, 0.4320, 0.5505]], [[0.3554, 0.6656, 0.3897, 0.5504, 0.3923]], [[0.6184, 0.7238, 0.4366, 0.5892, 0.5281]], [[0.4921, 0.4503, 0.4912, 0.6555, 0.4334]]]) (Pdb) p tensor.norm(1,3).shape torch.Size([32, 1, 5]) (Pdb) p tensor.shape torch.Size([32, 1, 5, 5])

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

python3.5
chainer : Version: 5.0.0
| NVIDIA-SMI 418.56 Driver Version: 418.56 CUDA Version: 10.1 |

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問