Infersent: menyematkan pada GPU

Dibuat pada 28 Jun 2018  ·  9Komentar  ·  Sumber: facebookresearch/InferSent

Demo.ipynb dan extract_feature.py di dir encoder/ dijalankan di cpu. Bisakah Anda memberi saya isyarat untuk menjalankan dua kode di GPU? Terima kasih untuk bantuannya!

Komentar yang paling membantu

Jadi di versi pytorch baru (>=0.4), jenis Tensor yang ada di cuda bukan lagi "torch.cudaTensor" tapi masih "torch.Tensor", makanya error.

Untuk memperbaiki masalah ini, dapatkah Anda mengubah baris: https://github.com/facebookresearch/InferSent/blob/master/models.py#L51
oleh
return self.enc_lstm.bias_hh_l0.data.is_cuda
dan lihat apakah itu berhasil?
Terima kasih

Semua 9 komentar

Hai,
bisakah kamu mencoba?
model = model.cuda()

di sel 2?
Terima kasih,
Alexis

@aconneau terima kasih atas balasan Anda, saya mencoba model = model.cuda(), kesalahan: Objek yang diharapkan dari jenis torch.cuda.FloatTensor tetapi ditemukan jenis torch.FloatTensor untuk argumen #4 'mat1' dari baris
"embeddings = model.encode(kalimat, bsize=128, tokenize=False, verbose=True)".
masalahnya adalah kalimat juga perlu diubah menjadi tensor, tetapi from_numpy() tidak dapat mengubah tipe numpy.str_ menjadi tensor. Jadi, bisakah Anda memberi saya solusi tentang masalah ini? Sungguh-sungguh terima kasih atas bantuan kebaikan Anda!

Saya mencoba di pihak saya dan berhasil sehingga saya tidak dapat mereproduksi masalah. Bisakah Anda menampilkan pesan kesalahan lengkap?

Versi pytorch mana yang Anda gunakan?

File "/informatik2/tams/home/mi/lieber_mi/projects/object_affordance/code/InferSent/demo.py", baris 36, di
embeddings = model.encode(kalimat, bsize=128, tokenize=False, verbose=True)
File "/informatik2/tams/home/mi/lieber_mi/projects/object_affordance/code/InferSent/models.py", baris 226, di encode
(batch, panjang[stidx:stidx + bsize])).data.numpy()
File "/informatik2/tams/home/mi/lieber_mi/projects/object_affordance/code/InferSent/models.py", baris 68, di depan
sent_output = self.enc_lstm(sent_packed)[0] # seqlen x batch x 2 nhidFile "/usr/local/lib/python3.5/dist-packages/torch/nn/modules/module.py", baris 491, di __call__hasil = self.forward( input, *kwargs)File "/usr/local/lib/python3.5/dist-packages/torch/nn/modules/rnn.py", baris 192, di depanoutput, tersembunyi = func(input, self.all_weights, hx, batch_sizes)File "/usr/local/lib/python3.5/dist-packages/torch/nn/_functions/rnn.py", baris 323, di depanfungsi pengembalian (input, *fargs, * fkwargs)
File "/usr/local/lib/python3.5/dist-packages/torch/nn/_functions/rnn.py", baris 243, di depan
nexth, output = func(input, hidden, weight, batch_sizes)
File "/usr/local/lib/python3.5/dist-packages/torch/nn/_functions/rnn.py", baris 86, di depan
hy, output = inner(input, hidden[l], weight[l], batch_sizes)
File "/usr/local/lib/python3.5/dist-packages/torch/nn/_functions/rnn.py", baris 158, di depan
tersembunyi = dalam(masukan_langkah, tersembunyi, *berat)
File "/usr/local/lib/python3.5/dist-packages/torch/nn/_functions/rnn.py", baris 33, di LSTMCell
gerbang = F.linier(masukan, w_ih, b_ih) + F.linier(hx, w_hh, b_hh)
File "/usr/local/lib/python3.5/dist-packages/torch/nn/functional.py", baris 992, secara linier
kembali torch.addmm(bias, input, weight.t())
RuntimeError: Objek yang diharapkan dari jenis torch.cuda.FloatTensor tetapi ditemukan jenis torch.FloatTensor untuk argumen #4 'mat1'.

Ini adalah kesalahan penuh. Saya menggunakan python3.5 dan pytorch 0.4.0.

Hai,
Saya pikir saya mengerti dari mana kesalahan itu berasal.
Di https://github.com/facebookresearch/InferSent/blob/master/models.py#L51 Saya memeriksa apakah model telah memakai cuda atau tidak. Ini mungkin tidak berfungsi lagi sejak versi baru pytorch. Bisakah Anda memodifikasi baris ini dan mencetak
print(type(self.enc_lstm.bias_hh_l0.data))
tepat sebelum baris 51?

Terima kasih

keluarannya adalah. Memang benar, modelnya belum memakai cuda. Saya mencoba pytorch 0.5.0, kesalahannya sama. Terima kasih untuk bantuannya!

Mungkin saya menemukan "jawaban". Saya memodifikasi baris 51 di model.py untuk mengembalikan 'cuda' (bagian terakhir "di str(type(self.enc_lstm.bias_hh_l0.data))" dikomentari). Dan sekarang, embedding bisa berjalan di GPU.

Jadi di versi pytorch baru (>=0.4), jenis Tensor yang ada di cuda bukan lagi "torch.cudaTensor" tapi masih "torch.Tensor", makanya error.

Untuk memperbaiki masalah ini, dapatkah Anda mengubah baris: https://github.com/facebookresearch/InferSent/blob/master/models.py#L51
oleh
return self.enc_lstm.bias_hh_l0.data.is_cuda
dan lihat apakah itu berhasil?
Terima kasih

@aconneau solusi Anda adalah jawaban yang benar, itu berhasil. Terima kasih atas jawaban dan bantuannya, salam !!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat