XuhanLiu / DrugEx

Deep learning toolkit for Drug Design with Pareto-based Multi-Objective optimization in Polypharmacology
MIT License
189 stars 66 forks source link

RuntimeError: expected device cuda:0 and dtype Byte but got device cuda:0 and dtype Bool #4

Open Auroraywood opened 4 years ago

Auroraywood commented 4 years ago

Hi!

An error occurs when I run pretrainer.py. Can you give me some advice? Thanks a lot!

Issue summary

prior.fit(zinc, out=netP_path)
/tmp/pip-req-build-58y_cjjl/aten/src/ATen/native/IndexingUtils.h:20: UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead.
Traceback (most recent call last):

  File "<ipython-input-17-9e97d71a0301>", line 1, in <module>
    prior.fit(zinc, out=netP_path)

  File "/home/tensorflow/DrugEx/model.py", line 422, in fit
    seqs = self.sample(1000)

  File "/home/tensorflow/DrugEx/model.py", line 388, in sample
    is_end = torch.ge(is_end + end_token, 1)

RuntimeError: expected device cuda:0 and dtype Byte but got device cuda:0 and dtype Bool
XuhanLiu commented 4 years ago

I checked this part of code in my own machine (PyTorch = 1.0 or 1.3 stable), but I did not find such a bug. Could you tell me the version of PyTorch?

Auroraywood commented 4 years ago

Thank you very much! The version of my pytorch is higher and I have alreadly figure the problem out! But now, I have met another error, when I train prior model on the data zinc_corpus.txt, it occurs keyerror when encode, so I modify voc = util.Voc("data/voc.txt") to voc = util.Voc("data/zinc_voc.txt"), then keyerror in encode disappeared, but now decode occurs keyerror again, this time I am confused.

Traceback (most recent call last):
  File "pretrainer.py", line 60, in <module>
    main()
  File "pretrainer.py", line 27, in main
    prior.fit(zinc, out=netP_path)
  File "/home/tensorflow/DrugEx/model.py", line 428, in fit
    smiles, valids = util.check_smiles(seqs, self.voc)
  File "/home/tensorflow/DrugEx/util.py", line 232, in check_smiles
    smile = voc.decode(seq)
  File "/home/tensorflow/DrugEx/util.py", line 94, in decode
    chars.append(self.ix2tk[i])
KeyError: 0
XuhanLiu commented 4 years ago

Thanks for reminding me this bug. It is caused by the duplication of 'EOS' in vocabulary defined in the file of 'voc.txt'. I have modified the 'util.py' and removed the 'EOS' defined in token sequences. If you do not want to regenerate the corpus, you can simply remove 'EOS' in the file of 'voc.txt'

Auroraywood commented 4 years ago

Thank you very much.