SamLynnEvans / Transformer

Transformer seq2seq model, program that can build a language translator from parallel corpus
Apache License 2.0
1.35k stars 350 forks source link

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! #30

Open trra1988 opened 3 years ago

trra1988 commented 3 years ago

Appriciate for release code, I have a little question is how to set gpu to train the model, when I train the model this error show up, thanks

""" The device argument should be set by using torch.device or passing a string as an argument. This behavior will be deprecated soon and currently defaults to cpu. training model... Traceback (most recent call last): ] 0% loss = ... File "train.py", line 183, in main() File "train.py", line 111, in main train_model(model, opt) File "train.py", line 34, in train_model src_mask, trg_mask = create_masks(src, trg_input, opt) File "/home/lin/program/Transformer-master/Batch.py", line 26, in create_masks trg_mask = trg_mask & np_mask RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu! """

A-Kerim commented 3 years ago

@trra1988 you may need to use :

src_mask, trg_mask = create_masks(src.cuda(), trg_input.cuda(), opt)

instead of

 src_mask, trg_mask = create_masks(src, trg_input, opt) 
trra1988 commented 3 years ago

@A-Kerim question is solved, thanks