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

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

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

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

深層学習

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

PyTorch

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

4664閲覧

pytorch:モデル可視化,cpuとcudaのデバイス間におけるエラー

pleasehelpme

総合スコア0

CUDA

CUDAは並列計算プラットフォームであり、Nvidia GPU(Graphics Processing Units)向けのプログラミングモデルです。CUDAは様々なプログラミング言語、ライブラリ、APIを通してNvidiaにインターフェイスを提供します。

深層学習

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

PyTorch

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

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2022/01/05 02:29

編集2022/01/05 14:52

pytorchにおいてtorchsummaryでモデルの構造をファインチューニングするため、
print(summary(model, input_size=([(10,1684,40),(10)])))
を実行しました。forward関数は2入力となっているので、引数を2つ入力しています。モデルのforward関数における引数の次元数はそれぞれ3次元と1次元です。しかし、以下のようなエラーが発生しました。:

`TypeError: rand() argument after * must be an iterable, not int`

どうやら(10)が反復可能でないとのことなので、簡単に以下を試しました。
print(summary(model, input_size=([(10,1684,40),(10,20)])))
すると、以下のエラーが出ました。

`'lengths' argument should be a 1D CPU int64 tensor, but got 2D cuda:0 Long tensor`

二つ目の引数の(10)や(10,20)がlengthsに対応していることはわかりますが、もともとの次元数が1なのに1次元として入力すると上記のようにエラーになってしまうのです。なにか解決策はありますでしょうか。

torchsummary は最新版を使用しています。

ご助言いただいたことを元に修正を行いました。
print(summary(model, input_size=([(10,1684,40),(10,)])))
すると以下のエラーメッセージが出ました。

python

1--------------------------------------------------------------------------- 2RuntimeError Traceback (most recent call last) 3~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs) 4 267 if isinstance(x, (list, tuple)): 5--> 268 _ = model.to(device)(*x, **kwargs) 6 269 elif isinstance(x, dict): 7 8~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 9 1101 or _global_forward_hooks or _global_forward_pre_hooks): 10-> 1102 return forward_call(*input, **kwargs) 11 1103 # Do not call functions when jit is used 12 13~/06rnn_attentionf6/my_model.py in forward(self, input_sequence, input_lengths, label_sequence) 14 85 # エンコーダに入力する 15---> 86 enc_out, enc_lengths = self.encoder(input_sequence, 16 87 input_lengths) 17 18~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 19 1119 20-> 1120 result = forward_call(*input, **kwargs) 21 1121 if _global_forward_hooks or self._forward_hooks: 22 23~/06rnn_attentionf6/encoder.py in forward(self, sequence, lengths) 24 101 rnn_input \ 25--> 102 = nn.utils.rnn.pack_padded_sequence(output, 26 103 output_lengths, 27 28~/.local/lib/python3.8/site-packages/torch/nn/utils/rnn.py in pack_padded_sequence(input, lengths, batch_first, enforce_sorted) 29 248 data, batch_sizes = \ 30--> 249 _VF._pack_padded_sequence(input, lengths, batch_first) 31 250 return _packed_sequence_init(data, batch_sizes, sorted_indices, None) 32 33RuntimeError: 'lengths' argument should be a 1D CPU int64 tensor, but got 1D cuda:0 Long tensor 34 35The above exception was the direct cause of the following exception: 36 37RuntimeError Traceback (most recent call last) 38/tmp/ipykernel_704668/614744292.py in <module> 39 1 from torchinfo import summary 40----> 2 print(summary(model, input_size=([(10,1684,40),(10,)]))) 41 42~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in summary(model, input_size, input_data, batch_dim, cache_forward_pass, col_names, col_width, depth, device, dtypes, row_settings, verbose, **kwargs) 43 199 input_data, input_size, batch_dim, device, dtypes 44 200 ) 45--> 201 summary_list = forward_pass( 46 202 model, x, batch_dim, cache_forward_pass, device, **kwargs 47 203 ) 48 49~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs) 50 275 except Exception as e: 51 276 executed_layers = [layer for layer in summary_list if layer.executed] 52--> 277 raise RuntimeError( 53 278 "Failed to run torchinfo. See above stack traces for more details. " 54 279 f"Executed layers up to: {executed_layers}" 55 56RuntimeError: Failed to run torchinfo. See above stack traces for more details. Executed layers up to:

また、この後、.cpu()により、CPUのマッチングを行い
print(summary(model, input_size=([(10,1684,40),(10,)])))
を再度実行しましたが、次は以下のエラーが生じました。

python

1--------------------------------------------------------------------------- 2RuntimeError Traceback (most recent call last) 3~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs) 4 267 if isinstance(x, (list, tuple)): 5--> 268 _ = model.to(device)(*x, **kwargs) 6 269 elif isinstance(x, dict): 7 8~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 9 1101 or _global_forward_hooks or _global_forward_pre_hooks): 10-> 1102 return forward_call(*input, **kwargs) 11 1103 # Do not call functions when jit is used 12 13~/06rnn_attentionf6/my_model.py in forward(self, input_sequence, input_lengths, label_sequence) 14 85 # エンコーダに入力する 15---> 86 enc_out, enc_lengths = self.encoder(input_sequence, 16 87 input_lengths) 17 18~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 19 1119 20-> 1120 result = forward_call(*input, **kwargs) 21 1121 if _global_forward_hooks or self._forward_hooks: 22 23~/06rnn_attentionf6/encoder.py in forward(self, sequence, lengths) 24 101 rnn_input \ 25--> 102 = nn.utils.rnn.pack_padded_sequence(output, 26 103 output_lengths.cpu(), #ここを修正 27 28~/.local/lib/python3.8/site-packages/torch/nn/utils/rnn.py in pack_padded_sequence(input, lengths, batch_first, enforce_sorted) 29 248 data, batch_sizes = \ 30--> 249 _VF._pack_padded_sequence(input, lengths, batch_first) 31 250 return _packed_sequence_init(data, batch_sizes, sorted_indices, None) 32 33RuntimeError: Length of all samples has to be greater than 0, but found an element in 'lengths' that is <= 0 34 35The above exception was the direct cause of the following exception: 36 37RuntimeError Traceback (most recent call last) 38/tmp/ipykernel_715630/614744292.py in <module> 39 1 from torchinfo import summary 40----> 2 print(summary(model, input_size=([(10,1684,40),(10,)]))) 41 42~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in summary(model, input_size, input_data, batch_dim, cache_forward_pass, col_names, col_width, depth, device, dtypes, row_settings, verbose, **kwargs) 43 199 input_data, input_size, batch_dim, device, dtypes 44 200 ) 45--> 201 summary_list = forward_pass( 46 202 model, x, batch_dim, cache_forward_pass, device, **kwargs 47 203 ) 48 49~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs) 50 275 except Exception as e: 51 276 executed_layers = [layer for layer in summary_list if layer.executed] 52--> 277 raise RuntimeError( 53 278 "Failed to run torchinfo. See above stack traces for more details. " 54 279 f"Executed layers up to: {executed_layers}" 55 56RuntimeError: Failed to run torchinfo. See above stack traces for more details. Executed layers up to: []

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

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

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

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

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

tiitoi

2022/01/05 02:45

要素が1つのタプルなら (10) じゃなくて (10,) ではないですか?
pleasehelpme

2022/01/05 06:07

ありがとうございます。その方式で行ったところ、iterableエラーはなくなりましたが、2Dつまり二次元の判定になってしまいました。
pleasehelpme

2022/01/05 06:20

すみません、torchsummaryでやっていました。torchinfoならば、1Dになりました。あとはcudaとcpuのデバイスのミスマッチが起こっているのを治すだけのようです。この方法についてもご助言いただけることはないでしょうか。
tiitoi

2022/01/05 07:41 編集

質問のコードだけではエラーの原因について判断するための情報が不足しております。コード全体を追記していただけますか?
pleasehelpme

2022/01/05 13:36

エラーコードの追記を行いました。
tiitoi

2022/01/06 06:13

モデルの定義のコードを追記できますか?
pleasehelpme

2022/01/06 13:54

すみません。自己解決しました。.cpu()コマンドの使用により、回避できました。モデルの可視化もできたので閉じようと思います。しかし、タプルのほうはとても役に立ちました。ありがとうございます。
guest

回答1

0

自己解決

.cpu()コマンドにより、デバイスのマッチングを行うことにより成功しました。ありがとうございます。

投稿2022/01/06 13:55

pleasehelpme

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問