pytorch 的 Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same  是什麼錯誤?

就是類型錯誤

像這次這個錯誤就是我原本從 np array 轉過來的是 DoubleTensor 格式

所以需要在 DataLoader 取得資料時再轉成 FloatTensor 格式

例如這樣

 

import torch
from torch.utils.data import DataLoader, Dataset
import numpy as np

# 自定義 Dataset 類別,將數據轉換為 FloatTensor
class CustomDataset(Dataset):
    def __init__(self, data):
        self.data = torch.tensor(data, dtype=torch.float)

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        return self.data[idx]

# 假設您有一些數據
data = np.random.rand(100, 10)

# 創建自定義的 Dataset
dataset = CustomDataset(data)

# 使用 DataLoader 加載 Dataset
batch_size = 64
dataloader = DataLoader(dataset, batch_size=batch_size, shuffle=True)

# 確認數據類型為 FloatTensor
for batch in dataloader:
    print(batch.dtype)  # torch.float32

 

感謝 chatGPT