You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用单张图片评估PyTorch预训练VGG16模型遇通道不匹配错误求助

单张图片评估PyTorch预训练VGG16模型报错问题

我在尝试用单张图片评估PyTorch预训练模型时遇到问题,特向大家求助。我理解PyTorch模型要求输入数据格式为[批量维度,通道数,高度,长度],已调整张量为此格式,但仍出现错误。我是编程和机器学习新手,若问题描述不够具体还请见谅。

代码片段

from monai.transforms import AddChannel
from skimage.io import imread
import numpy as np
import cv2
from torch.utils.data import DataLoader
from torchvision import models
import torch  # 补充:原代码漏导入torch

img_array = imread(train_imageinfo_list[0][0])

resized_img = cv2.resize(img_array, (224, 224))
img_tensor = torch.from_numpy(resized_img)
channel_adder = AddChannel()
channel_image = channel_adder(img_tensor)
batch_image = channel_adder(channel_image)
img_tensor = batch_image
model= models.vgg16()
model(img_tensor)
eval(model)

错误信息

ERROR: RuntimeError: Given groups=1, weight of size [64, 3, 3, 3], expected input[1, 1, 224, 224] to have 3 channels, but got 1 channels instead


错误原因

  1. 模型输入通道不匹配:预训练的VGG16是基于3通道RGB图像训练的,第一层卷积层权重形状为[64,3,3,3],其中第二个维度的3明确要求输入必须是3通道图像。而你读取的是单通道灰度图(imread读取灰度图返回2维数组),经过AddChannel处理后也仅得到1通道输入,张量形状为[1,1,224,224],不符合模型要求。
  2. 批量维度添加方式错误:你用两次AddChannel来构造批量维度的操作不正确。第一次AddChannel是给单张图添加通道维度(从[224,224]变为[1,224,224]),第二次操作错误地把通道维度又加了一层,最终导致通道数变成1,正确的批量维度添加应该用unsqueeze(0)。

内容的提问来源于stack exchange,提问作者Criticalll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:01:03