一文搞定 inception-score-pytorch 全部报错:尺寸、数据格式与CUDA配置的5个实战解法
一文搞定 inception-score-pytorch 全部报错尺寸、数据格式与CUDA配置的5个实战解法【免费下载链接】inception-score-pytorchInception Score for GANs in Pytorch项目地址: https://gitcode.com/gh_mirrors/in/inception-score-pytorch刚跑起来就报错别慌。inception-score-pytorch 是评估 GAN 生成图像质量最常用的 Inception Score 实现但它对输入尺寸、数据格式和运行设备的要求相当严格新手几乎都会在这里卡上一两次。本文把这些高频报错拆成 5 个可以直接照做的实战方案照着改就能跑通。报错速查表先对号入座报错 / 警告原文一句话原因解决方向Expected input size (3, 299, 299) but got (3, 64, 64)图像尺寸不是 Inception v3 要求的 299x299设置resizeTrue或预处理缩放AssertionErrorbatch_size为 0 或大于数据集总量调小batch_sizeWARNING: You have a CUDA device...明明有 GPU 却没启用调用时加cudaTrueCUDA out of memory显存不够减小 batch、分批或退回 CPUAttributeError: module torchvision.transforms has no attribute Scaletorchvision 版本过新旧 API 被移除改用transforms.Resize三步修复图像尺寸报错别再手动改代码如果你看到Expected input size (3, 299, 299) but got (3, 64, 64)说明你的生成器输出比如 64x64 或 32x32 的 CIFAR 图像没有达到 Inception v3 的输入门槛。代码里inception_score的resize参数就是为此准备的默认是False不开启就会硬报错。第一步最快解法调用时直接开启内置上采样一行代码搞定score inception_score(imgs, cudaTrue, batch_size32, resizeTrue)第二步如果想在数据加载阶段处理用transforms.Resize提前缩放transforms.Compose([ transforms.Resize((299, 299)), transforms.ToTensor(), ])第三步注意代码第 39 行的上采样用的是双线性插值若你的 GAN 训练在 32x32 的 CIFAR 上直接用方案一即可效果与手动缩放基本一致不必重复处理。一条断言看懂 AssertionErrorbatch_size 不是越大越好代码第 22-23 行埋了两个硬性断言assert batch_size 0 assert N batch_size如果你把batch_size设成 0或设成大于图像总数N就会直接触发AssertionError。这背后的逻辑很简单Inception Score 需要在每个 batch 上做前向推理batch 必须非空且不能一次性吞下全部数据。建议取1 batch_size N32 是个稳妥的起点显存紧张时调到 8 或 16 都没问题。一次归一化修好所有数据格式报错代码第 15 行的注释写得很明确imgs是归一化到[-1, 1]范围的(3xHxW)图像。如果你直接喂入 [0, 255] 或 [0, 1] 的数据Softmax 输出会严重失真IS 分数彻底失去参考意义。如果你看到Expected 4D tensor这类报错说明数据少了批次维度——DataLoader会自动补上这一维前提是你传入的是一个实现了__getitem__和__len__的 Dataset 对象而不是裸的张量。正确的归一化写法transforms.Compose([ transforms.ToTensor(), # (H,W,C) 转成 (C,H,W) 且缩放到 [0,1] transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) # 把 [0,1] 映射到 [-1,1] ])顺带一提源码里__main__的 CIFAR 示例正是这个组合照抄即可。一行命令开启 GPU 加速告别你明明有显卡警告如果程序没崩但终端冒出一句WARNING: You have a CUDA device, so you should probably set cudaTrue说明你的显卡在空转——代码默认cudaTrue没错但当你手动传了cudaFalse、或 CUDA 初始化失败时就会回落到 CPU。想确认是不是真的在用 GPU直接看有没有这条警告即可。把 GPU 打开只需一个参数inception_score(imgs, cudaTrue, batch_size32, resizeTrue)两步应对 CUDA out of memory先减批再换设备显存报错常见于 batch 太大或图像分辨率过高。按优先级尝试缩小batch_size从 32 降到 8 甚至 1代价只是多跑几个 batchIS 结果不受影响。退回 CPU设cudaFalse速度慢但能跑通适合只做小规模验证。另外如果你的数据量很大建议分批生成预测结果再手动合并而不是一次性把整个数据集塞进get_pred。版本升级后的三大兼容坑新版 torchvision 写法对照这个仓库比较早直接用旧代码跑在新版 torchvision 上还会踩三个版本坑transforms.Scale(32)在新版中已被移除 → 改用transforms.Resize(32)inception_v3(pretrainedTrue)已弃用 → 改用inception_v3(weightsInception_V3_Weights.DEFAULT)from torch.autograd import Variable会抛弃用警告 → 新版本里张量本身即可参与自动求导可直接删除相关行如果是这几个报错改完对应行即可逻辑无需变动。通用自检清单跑之前逐项勾选图像为 3 通道形状是 (3, H, W)通道在前图像已归一化到 [-1, 1]用Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))尺寸不是 299x299 时已设置resizeTruebatch_size在 1 和数据集总量之间有 GPU 时已设置cudaTrue无 GPU 时不设置torchvision 版本兼容性Resize/weights新写法快速上手克隆、安装、一行跑通仓库地址https://gitcode.com/gh_mirrors/in/inception-score-pytorchgit clone https://gitcode.com/gh_mirrors/in/inception-score-pytorch cd inception-score-pytorch pip install torch torchvision numpy scipy python inception_score.py脚本会自动下载 CIFAR10 并计算 Inception Score跑通之后把你自己的数据集替换进inception_score()即可。重点记住三件事尺寸不对就开resize数据记得归一化到 [-1,1]有显卡就开cuda——90% 的报错都逃不出这三条。【免费下载链接】inception-score-pytorchInception Score for GANs in Pytorch项目地址: https://gitcode.com/gh_mirrors/in/inception-score-pytorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考