

pytorchにおいてtorchsummaryでモデルの構造をファインチューニングするため、可視化するため、以下を実行しました。

[code]

    print(summary(model, input_size=([(10,1684,40),(10)])))
    
[/code]

forward関数は2入力となっているので、引数を２つ入力しています。モデルのforward関数における引数の次元数はそれぞれ３次元と１次元です。しかし、以下のようなエラーが発生しました。:

[code]

    TypeError: rand() argument after * must be an iterable, not int
    
[/code]

どうやら(10)が反復可能でないとのことなので、簡単に以下を試しました。

[code]

    print(summary(model, input_size=([(10,1684,40),(10,20)])))
    
[/code]

すると、以下のエラーが出ました。

[code]

    'lengths' argument should be a 1D CPU int64 tensor, but got 2D cuda:0 Long tensor
    
[/code]

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

* * *

上記の件以下の様に修正することで解消できました。

[code]

    print(summary(model, input_size=([(10,1684,40),(10,)])))
    
[/code]

しかし、次にこれを実行したところ、以下のエラーが発生しました。

[code]

    RuntimeError                              Traceback (most recent call last)
    ~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs)
        267             if isinstance(x, (list, tuple)):
    --> 268                 _ = model.to(device)(*x, **kwargs)
        269             elif isinstance(x, dict):
    
    ~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
       1101                 or _global_forward_hooks or _global_forward_pre_hooks):
    -> 1102             return forward_call(*input, **kwargs)
       1103         # Do not call functions when jit is used
    
    ~/06rnn_attentionf6/my_model.py in forward(self, input_sequence, input_lengths, label_sequence)
         85         # エンコーダに入力する
    ---> 86         enc_out, enc_lengths = self.encoder(input_sequence,
         87                                             input_lengths)
    
    ~/.local/lib/python3.8/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
       1119 
    -> 1120         result = forward_call(*input, **kwargs)
       1121         if _global_forward_hooks or self._forward_hooks:
    
    ~/06rnn_attentionf6/encoder.py in forward(self, sequence, lengths)
        101             rnn_input \
    --> 102                 = nn.utils.rnn.pack_padded_sequence(output, 
        103                                                   output_lengths.cpu(), #ここを修正
    
    ~/.local/lib/python3.8/site-packages/torch/nn/utils/rnn.py in pack_padded_sequence(input, lengths, batch_first, enforce_sorted)
        248     data, batch_sizes = \
    --> 249         _VF._pack_padded_sequence(input, lengths, batch_first)
        250     return _packed_sequence_init(data, batch_sizes, sorted_indices, None)
    
    RuntimeError: Length of all samples has to be greater than 0, but found an element in 'lengths' that is <= 0
    
    The above exception was the direct cause of the following exception:
    
    RuntimeError                              Traceback (most recent call last)
    /tmp/ipykernel_715630/614744292.py in <module>
          1 from torchinfo import summary
    ----> 2 print(summary(model, input_size=([(10,1684,40),(10,)])))
    
    ~/.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)
        199         input_data, input_size, batch_dim, device, dtypes
        200     )
    --> 201     summary_list = forward_pass(
        202         model, x, batch_dim, cache_forward_pass, device, **kwargs
        203     )
    
    ~/.local/lib/python3.8/site-packages/torchinfo/torchinfo.py in forward_pass(model, x, batch_dim, cache_forward_pass, device, **kwargs)
        275     except Exception as e:
        276         executed_layers = [layer for layer in summary_list if layer.executed]
    --> 277         raise RuntimeError(
        278             "Failed to run torchinfo. See above stack traces for more details. "
        279             f"Executed layers up to: {executed_layers}"
    
    RuntimeError: Failed to run torchinfo. See above stack traces for more details. Executed layers up to: []
    
[/code]


CC BY-SA 4.0
2022-01-05T12:17:23.047
85504
2022-01-05T16:20:34.537
2022-01-05T16:20:34.537
3060
50761
question
python 深層学習 pytorch
torchinfo.summaryでのエラーおよび、引数のエラー