ฉันกำลังพยายามฝึกเป็น DNN นางแบบการใช้ pytorch และฉันต้องการจะใช้ตัวประมวลผลกราฟิกเพื่อรถไฟของฉันคุณครูแต่พอกลับมา ฉันสามารถเรียบร้อยแล้คัดลอกของฉันนางแบบเพื่อนที่ตัวประมวลผลกราฟิกโดยใช้ model.to(device)
อยู่ที่ไหน device = cuda:0
.
อย่างไรก็ตามมาตรฐานวิธีการของสำหรับการคัดลอกข้อมูลเข้าไปที่ตัวประมวลผลกราฟิก,(RuntimeError:ข้อมูลประเภท(ถือเครื่องพ่นไฟอยู่นะFloatTensor)และน้ำหนักประเภท(ถือเครื่องพ่นไฟอยู่นะcuda.FloatTensor)ควรจะเป็นคนเดียวกัน)นั่นคือ X.to(device)
แล้ว X.cuda()
ก็ไม่ได้ทำให้ฉันที่ต้องการแสดงผลหน้าจอ ต่อไปนี้เป็นวิธีการตอนนี้ผม implementing:
def train_loop(self, dataloader, device):
size = len(dataloader.dataset)
for batch, (X, y) in enumerate(dataloader):
# Compute prediction and loss
print(device)
X.to(device)
print(X.is_cuda)
y.to(device)
pred = self.model(X)
loss = self.loss_fn(pred, y)
ในการพิมพ์อุปกรณ์ค่า print(device)
มันแสดงเป็น: cuda:0
. แต่เมื่อฉันวิ่งหนี print(X.is_cuda)
มันกลับมา false
. (ภาพหน้าจอที่จับได้ติดด้านล่างนี้).
ได้โปรดปล่อยฉันรู้ว่าฉันอยู่ที่ไหนจะผิดพลาด ขอบคุณ!