Pytorch: パディングがnn.Conv1dでfloatに設定されている場合の紛らわしいエラーメッセージ

作成日 2017年05月16日  ·  3コメント  ·  ソース: pytorch/pytorch

誤ってConvレイヤーを作成し、パディングをfloatとして渡すと、紛らわしいエラーmsgが表示され、デバッグが困難になります。 また、フォワードパスを実行しているときにエラーがスローされます。

self.cnn = nn.Conv1d(in_channels=self.input_size, out_channels=self.num_filters,kernel_size=kw_l,padding=1.0)
self.cnn(inp)  # error is thrown in this line

エラーメッセージは「RuntimeError:引数1はタプルではなくintのタプルでなければなりません」です。

全てのコメント3件

明確にするために、RuntimeErrorを更新して、誤ったタプルの型を含めると役立つ場合があると思います。したがって、型がintであることが予想されることは明らかです。

import torch
import torch.nn as nn
from torch.autograd import Variable
input = Variable(torch.randn(1, 1, 10))
output = nn.Conv1d(1, 1, 3, padding=1)(input)  # fine
output = nn.Conv1d(1, 1, 3, padding=1.0)(input)  # error

このエラーメッセージはTupleParserによってスローされます。この時点では、解析しているパラメータはわかりませんが、パラメータのインデックス(引数リスト内)のみがわかります。

タプルパーサーはパラメーターをautograd.functions.*に解析するためにのみ使用されるため、 TupleParser::parse関数を拡張して、パラメーター名も取り込んで、 TupleParser::invalid_typeに渡すことができます。より意味のあるエラーをスローしますか?

または、Pythonレベルでこれらのタイプチェックを追加することもできますか?

@apaszke @soumithどちらの方法を好むか、または別の方法を教えていただければ、PRをお送りします。

タプルパーサーにパラメーター名を追加するのは私にはいいですね

このページは役に立ちましたか?
0 / 5 - 0 評価