Wenn ich folgende Zeilen ausführe:
Einbettungen = model.encode(Sätze, bsize=128, tokenize=False, verbose=True)
print('nb Sätze encoded : {0}'.format(len(embeddings)))
Ich bekomme folgenden Fehler:
RuntimeError Traceback (letzter Aufruf zuletzt)
----> 1 embeddings = model.encode(Sätze, bsize=128, tokenize=False, verbose=True)
2 print('nb Sätze encoded : {0}'.format(len(embeddings)))
/home/leena/Downloads/InferSent-master/encoder/models.py in encode(self,sätze, bsize, tokenize, verbose)
177 wenn self.use_cuda:
178 Batch = Batch.cuda()
--> 179 batch = self.forward((batch, lengths[stidx:stidx + bsize])).data.cpu().numpy()
180 Einbettungen.append(Batch)
181 Einbettungen = np.vstack(Einbettungen)
/home/leena/Downloads/InferSent-master/encoder/models.py in forward(self, sent_tuple)
48
49 # Sortierung nach Länge aufheben
---> 50 idx_unsort = Torch.from_numpy(idx_unsort).cuda() if self.use_cuda sonst Torch.from_numpy(idx_sort)
51 sent_output = sent_output.index_select(1, Variable(idx_unsort))
52
RuntimeError: from_numpy erwartet ein np.ndarray, hat aber eine Fackel.LongTensor
Versionsdetails:
'3.6.0 |Anaconda benutzerdefinierte (64-Bit)| (Standard, 23. Dezember 2016, 12:22:00) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'
In [ ]:
Fackel-0.1.12.post2
Es gibt einen kleinen Fehler. Linie Nr. 50 sollte sein:
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_unsort)
Anstatt von,
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_sort)
In der else-Bedingung sollte es torch.from_numpy(idx_unsort)
und nicht torch.from_numpy(idx_sort)
. idx_sort
ist eine Fackel.LongTensor. Siehe Zeile Nr. 41.
Danke Wasi. Gelöst in 9357c2b6c6eb38cd5bdfd69ce6ab88a39973a399 (Fehler aus dem letzten Commit 260bfd45c915529dd5ab75a55d3aa3b94432dee0).
Das funktioniert jetzt. Dankeschön.
Hilfreichster Kommentar
Es gibt einen kleinen Fehler. Linie Nr. 50 sollte sein:
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_unsort)
Anstatt von,
idx_unsort = torch.from_numpy(idx_unsort).cuda() if self.use_cuda else torch.from_numpy(idx_sort)
In der else-Bedingung sollte es
torch.from_numpy(idx_unsort)
und nichttorch.from_numpy(idx_sort)
.idx_sort
ist eine Fackel.LongTensor. Siehe Zeile Nr. 41.