解决:RuntimeError: mat1 and mat2 shapes cannot be multiplied(单张图片输入情况,可参考)

本文主要是介绍解决:RuntimeError: mat1 and mat2 shapes cannot be multiplied(单张图片输入情况,可参考),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在练习使用pytorch加载模型,识别图片时,出现了这一问题。
在这里插入图片描述
解决方法:使用torch.reshape()将输入数据格式改成与网络相符的格式。

详细过程:

报错代码:

import torch
import torchvision
from PIL import Imagefrom model import *image = Image.open("./img/dog.png")
transform = torchvision.transforms.Compose([torchvision.transforms.Resize((32, 32)),torchvision.transforms.ToTensor()])
image = transform(image)model = MyNet()
model.load_state_dict(torch.load("./testmodel/mynet_7.pth"))
output = model(image)
print(output)

其中我的model.py文件中的代码:

#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2023-09-22 15:57
# @Author : Kanbara
# @File : model.pyimport torch
from torch import nn
from torch.nn import Sequential, Conv2d, MaxPool2d, Linear, Flattenclass MyNet(nn.Module):def __init__(self):super(MyNet, self).__init__()self.model = Sequential(Conv2d(3, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 32, 5, padding=2),MaxPool2d(2),Conv2d(32, 64, 5, padding=2),MaxPool2d(2),Flatten(),Linear(64*4*4, 64),Linear(64, 10))def forward(self, x):x = self.model(x)return x#测试该文件是否编译有问题
if __name__ == '__main__':mynet = MyNet()input = torch.ones([64, 3, 32, 32])output = mynet(input)print(output.shape)

model中的网络经过测试,本身不存在问题。
实际上,是输入图像尺寸少了一个参数batch_size导致。

print(image.shape)
>>torch.Size([3, 32, 32])

而根据网络设置,输入应有四个维度,第一个维度为batch_size。通过torch.reshape功能,添加代码:

image = torch.reshape(image, (1, 3, 32, 32))

即可解决。此时代码能够正常运行,修改后代码:

import torch
import torchvision
from PIL import Imagefrom model import *image = Image.open("./img/dog.png")
transform = torchvision.transforms.Compose([torchvision.transforms.Resize((32, 32)),torchvision.transforms.ToTensor()])
image = transform(image)model = MyNet()
model.load_state_dict(torch.load("./testmodel/mynet_7.pth"))
image = torch.reshape(image, (1, 3, 32, 32))
output = model(image)
print(output)

这篇关于解决:RuntimeError: mat1 and mat2 shapes cannot be multiplied(单张图片输入情况,可参考)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/240884

相关文章

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

XML重复查询一条Sql语句的解决方法

《XML重复查询一条Sql语句的解决方法》文章分析了XML重复查询与日志失效问题,指出因DTO缺少@Data注解导致日志无法格式化、空指针风险及参数穿透,进而引发性能灾难,解决方案为在Controll... 目录一、核心问题:从SQL重复执行到日志失效二、根因剖析:DTO断裂引发的级联故障三、解决方案:修复

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

解决Entity Framework中自增主键的问题

《解决EntityFramework中自增主键的问题》:本文主要介绍解决EntityFramework中自增主键的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Entity Framework中自增主键问题解决办法1解决办法2解决办法3总结Entity Fram

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O