Pytorch 使用报错 RuntimeError: Caught RuntimeError in DataLoader worker process 0.

这个错误是可能是由于在DataLoader的工作进程中尝试访问CUDA设备导致的。PyTorch的DataLoader使用多进程加载数据,而CUDA上下文不能在子进程中直接使用。

修改前的代码为:

复制代码
def prepare_data(file_path):
    # 读取Excel文件
    df = pd.read_excel(file_path, header=None)
    df = df.iloc[1:]
    print(df)

    # 提取特征和标签
    features = df.iloc[:, :-1].values.astype('float32')  # extract feature
    labels = df.iloc[:, -1].values.astype('int64')  # extract label



    # 数据标准化
    scaler = StandardScaler()
    features = scaler.fit_transform(features)

    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(
        features, labels, test_size=0.2, random_state=42
    )

    # 转换为PyTorch张量并移动到设备
    X_train = torch.tensor(X_train, device=device)
    X_test = torch.tensor(X_test, device=device)
    y_train = torch.tensor(y_train, device=device)
    y_test = torch.tensor(y_test, device=device)

    return X_train, X_test, y_train, y_test, scaler

数据加载修改为下运行OK:

复制代码
class ExcelDataset(Dataset):
    def __init__(self, features, labels):
        # 确保数据在CPU上
        self.features = features.cpu() if features.is_cuda else features
        self.labels = labels.cpu() if labels.is_cuda else labels
相关推荐
葡萄城技术团队几秒前
【Excel 公式学习】告别“&”时代:TEXTJOIN 函数的万能用法
大数据·人工智能
天天进步20152 分钟前
[前端篇] 桌面端与 AI 的碰撞:Toonflow 基于 Electron 的高效交互实现
前端·人工智能·electron
reasonsummer2 分钟前
【教学类-134-01】20260414 Python制作童话故事音频
开发语言·python
Irene19913 分钟前
推荐学 Python 的编辑器:PyCharm(附:下载安装教程)
python·编辑器
敲上瘾3 分钟前
大模型接入从入门到实战:API/SDK/本地部署/Claude Code 路由全解析
人工智能·深度学习·机器学习·json·aigc·claude
秦jh_5 分钟前
【LangChain】LangChain 与 LangGraph 介绍
人工智能·langchain
captain_AIouo9 分钟前
Captain AI:破解OZON困局,赋能竞争优势
大数据·人工智能·经验分享·aigc
黎阳之光9 分钟前
【从虚拟到实体:黎阳之光实时三维重构,开启AI空间智能新纪元
大数据·人工智能·算法·安全·数字孪生
亦暖筑序9 分钟前
Spring AI VectorStore与RAG Pipeline源码深度解析:从PDF到检索增强生成的完整实现
人工智能·spring