私はこのチュートリアルに従っています: http://nlp.seas.harvard.edu/2018/04/03/attention.html Transformerモデルを実装する「注意はあなたが必要とするすべて」紙から。
ただし、次のエラーが表示されます。RuntimeError:「exp」は「torch.LongTensor」に実装されていません
これは、PositionalEncondingクラスの、エラーの原因となっている行です。
div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))
ここで構築されるとき:
pe = PositionalEncoding(20, 0)
何か案は??私はすでにこれをおそらくTensor Float型に変換しようとしましたが、これはうまくいきませんでした。
付属のファイルを含むノートブック全体をダウンロードしましたが、元のチュートリアルではエラーが続くようです。
このエラーの原因は何ですか?
ありがとう!
私もたまたまこのチュートリアルに従っていました。
私にとっては、torch.arange
浮動小数点型テンソルを生成する
から
position = torch.arange(0, max_len).unsqueeze(1)
div_term = torch.exp(torch.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))
に
position = torch.arange(0., max_len).unsqueeze(1)
div_term = torch.exp(torch.arange(0., d_model, 2) * -(math.log(10000.0) / d_model))
簡単な修正。しかし、今では私にとってはうまくいきます。トーチexp
とsin
は以前はLongTensor
をサポートしていましたが、もうサポートしていなかった可能性があります(これについてはよくわかりません)。
_torch.arange
_はLongTensor
を返すようです。代わりにtorch.arange(0.0, d_model, 2)
を試して、代わりにトーチにFloatTensor
を返させてください。
@shaiからの提案は私のために働いた。 0.0
を2つの場所で使用して、init
のPositionalEncoding
メソッドを変更しました。
position = torch.arange(0.0, max_len).unsqueeze(1)
div_term = torch.exp(torch.arange(0.0, d_model, 2) * -(math.log(10000.0) / d_model))