次の行を実行すると:
埋め込み= model.encode(sentences、bsize = 128、tokenize = False、verbose = True)
print( 'nb文がエンコードされました:{0}' .format(len(embeddings)))
次のエラーが発生します。
RuntimeErrorトレースバック(最後の最後の呼び出し)
----> 1つの埋め込み= model.encode(sentences、bsize = 128、tokenize = False、verbose = True)
2 print( 'nb文がエンコードされました:{0}' .format(len(embeddings)))
/home/leena/Downloads/InferSent-master/encoder/models.py in encode(self、sentences、bsize、tokenize、verbose)
self.use_cudaの場合は177:
178バッチ= batch.cuda()
-> 179バッチ= self.forward((batch、lengths [stidx:stidx + bsize]))。data.cpu()。numpy()
180 embeddings.append(batch)
181埋め込み= np.vstack(埋め込み)
/home/leena/Downloads/InferSent-master/encoder/models.py in forward(self、sent_tuple)
48
49#長さで並べ替えを解除
---> 50 idx_unsort = torch.from_numpy(idx_unsort).cuda()if self.use_cuda else torch.from_numpy(idx_sort)
51 sent_output = sent_output.index_select(1、Variable(idx_unsort))
52
RuntimeError:from_numpyはnp.ndarrayを期待していますが、torch.LongTensorを取得しました
バージョンの詳細:
'3.6.0 |アナコンダカスタム(64ビット)| (デフォルト、2016年12月23日、12:22:00)\ n [GCC 4.4.7 20120313(Red Hat 4.4.7-1)] '
の [ ]:
トーチ-0.1.12.post2
小さなバグがあります。 行番号 50は次のようになります。
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_unsort)
それ以外の、
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_sort)
else条件では、 torch.from_numpy(idx_sort)
ではなくtorch.from_numpy(idx_unsort)
である必要があります。 idx_sort
はtorch.LongTensorです。 行番号を参照してください。 41。
確かに、ワシに感謝します。 9357c2b6c6eb38cd5bdfd69ce6ab88a39973a399で解決されました(最近のコミット260bfd45c915529dd5ab75a55d3aa3b94432dee0からのバグ)。
これは現在機能しています。 ありがとうございました。
最も参考になるコメント
小さなバグがあります。 行番号 50は次のようになります。
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_unsort)
それ以外の、
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_sort)
else条件では、
torch.from_numpy(idx_sort)
ではなくtorch.from_numpy(idx_unsort)
である必要があります。idx_sort
はtorch.LongTensorです。 行番号を参照してください。 41。