Bestimmte Mitglieder eines FackelmodulPython

Python-Programme
Anonymous
 Bestimmte Mitglieder eines Fackelmodul

Post by Anonymous »

Ein MWE ist wie folgt: < /p>

Code: Select all

import torch
import torch.nn as nn

class model(nn.Module):
def __init__(self):
super(model,self).__init__()
self.mat = torch.randn(2,2)

def forward(self,x):
print('self.mat.device is',self.mat.device)
x = torch.mv(self.mat,x)
return x

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
m = model()
m.to(device)

x = torch.tensor([2.,1.])
x = x.to(device)

m(x)
< /code>

Die Ausgabe ist < /p>

self.mat.device is cpu
< /code>

und gleich danach kommt < /p>

Traceback (most recent call last):
File "Z:\cudatest.py", line 21, in 
print(m(x))
File "E:\Python37\lib\site-packages\torch\nn\modules\module.py", line 532, in __call__
result = self.forward(*input, **kwargs)
File "Z:\cudatest.py", line 11, in forward
x = torch.mv(self.mat,x)
RuntimeError: Expected object of device type cuda but got device type cpu for argument #1 'self' in call to _th_mv
< /code>

Der Code funktioniert gut, wenn ich Geräte = fackel.device ('cpu') < /code> setze. Es scheint, dass das [url=viewtopic.php?t=26065]Problem[/url] modell ist. Warum funktioniert Whise nicht? Wie kann ich das beheben? Bitte beachten Sie Folgendes: 

[list]
[*]  Obwohl dieses spezielle Beispiel durch Verwendung von self -mat = nn.linear (2,2) 
und x = self.mat (x) stattdessen, benötigt ich auch in einigen Daten, die in etwas vorwärts gelagert werden, (). Wie kann ich einen solchen Tensor konstruieren und an GPU senden, wenn ich M.TO (Gerät)
[*] Aufrufe nicht im Voraus bekannt ist, ob der Computer GPU hat oder nicht. Daher ist das Schreiben von self.mat = self.mat.cuda () keine gute Lösung für meinen Fall.
[/list]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post