pytorch图像和张量的相互转换_如何加载图像并将其转换为PyTorch的适当张量?
我正在尝试自定义加载一些带有标签的图像文件(JPG文件),并按照示例datasets.html" rel="nofollow noreferrer">here将它们输入PyTorch中的卷积神经网络(CNN)。然而,似乎仍然有no decent end-to-end tutorials。我看到的问题如下。RuntimeError: thnn_conv2d_forward is not implemented for type
torch.ByteTensor
我的Dataset如下所示。class ImageData(Dataset):
def __init__(self, width=256, height=256, transform=None):
self.width = width
self.height = height
self.transform = transform
y, x = get_images() #y is a list of labels, x is a list of file paths
self.y = y
self.x = x
def __getitem__(self, index):
img = Image.open(self.x[index]) # use pillow to open a file
img = img.resize((self.width, self.height)) # resize the file to 256x256
img = img.convert('RGB') #convert image to RGB channel
if self.transform is not None:
img = self.transform(img)
img = np.asarray(img).transpose(-1, 0, 1) # we have to change the dimensions from width x height x channel (WHC) to channel x width x height (CWH)
img = torch.from_numpy(np.asarray(img)) # create the image tensor
label = torch.from_numpy(np.asarray(self.y[index]).reshape([1, 1])) # create the label tensor
return img, label
def __len__(self):
return len(self.x)
CNN取自here,并被修改为处理NCWH(批处理x通道x宽度x高度),如下所示。class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 256, 256)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
学习循环也取自same tutorial,如下所示。for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(dataloader, 0):
# get the inputs
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
但是,上面提到的RuntimeError被抛出。关于我做错了什么有什么想法吗?
另外,我知道在不转置图像数据的情况下,它的形状是WHC,但NN模型要求它是CWH。问题是,如果我们从WHC改为CWH,那么如果我们在DataLoader上迭代,就不能再简单地绘制图像了。data = ImageData()
dataloader = DataLoader(data, batch_size=10, shuffle=True, num_workers=1)
imgs, labels = next(iter(dataloader))
plt.imshow(imgs.numpy()[0,:,:,:])
plt.show()
尝试执行此操作将引发以下错误。TypeError: Invalid dimensions for image data
对我来说,那个枕头给了你WHC,你可以用它来策划,但是PyTorch CNN想让CWH来处理,这是个麻烦。你知道如何一致或容易地不做这么多的转换,但能够绘图和输入数据到CNN吗?或是WHC与CWH的不匹配只是我们必须面对的问题?
在不转置图像的情况下,当将图像传送到CNN时,会抛出以下错误。RuntimeError: Given groups=1, weight[256, 3, 256, 256], so expected
input[10, 256, 256, 3] to have 3 channels, but got 256 channels
相反。
pytorch图像和张量的相互转换_如何加载图像并将其转换为PyTorch的适当张量?相关推荐
- 解密 | OpenCV加载图像大小是有限制的 ?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 问题来由 最近有人问一个问题,就是它有个大小800MB的图像文件, ...
- OpenCV加载图像列表imagelist的实例(附完整代码)
OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 #include "opencv2/im ...
- 【前端】【cornerstone】【未完善】cornerstone重新加载图像大小问题——拒绝花里胡哨
[前端][cornerstone][未完善]cornerstone重新加载图像尝试--拒绝花里胡哨 问题 正常加载图像 尝试方法 方法1[无效]:直接修改columnPixelSpacing.rowP ...
- 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作
使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作 总共分为四步 构造一个my_dataset类,继承自torch.utils.data.Dataset 重写__getite ...
- python异步加载图片_如何在PyQt5中正确异步加载图像?
我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...
- c++读取图片_Pytorch读取,加载图像数据(一)
Pytorch读取,加载图像数据(一) 在学习Pytorch的时候,先学会如何正确创建或者加载数据,至关重要. 有了数据,很多函数,操作的效果就变得很直观. 本文主要用其他库读取图像文件(学会这个,你 ...
- go语言html css,html – 在Golang中加载图像和CSS
我在项目根目录的package main中的server.js中设置了一个路由 http.HandleFunc( "/",route.IndexHandler) IndexHand ...
- pytorch入门(二):数据加载和处理
pytorch入门(二):数据加载和处理 小引 数据加载 引包 数据集 编写辅助函数 显示图像及其特征点 定义数据集类 数据处理 组合变换 遍历数据集 其他注意事项 本章对应pytorch官方文档链接 ...
- python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化
python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...
最新文章
- stm32cubemx生成不了keil工程文件_STM32CubeMX系列教程03_创建并生成代码工程
- Python 一种接触就容易爱上的语言一
- php+数学计算公式,PHP数学计算函数总结
- Convolutional Neural Networks for Visual Recognition 8
- 大厂年薪100万的可视化工程师,水平到底有多牛,看完我服了
- Notepad++ 配置 Markdown
- java避免活锁.死锁的解决,java并发编程(九): 避免活跃性危险
- 我的微博,三层嵌套,
- Thin框架的应用(一) 单机双人对战象棋程序
- 如何在ionic5 release版本降级安装ionic3
- mysql 参照完整性规则_mysql数据的完整性约束(完整)
- python通过接口判断公共节假日
- flink 任务提交问题汇总
- 至多删三个字符(动态规划字符串问题)
- Linux连接redis数据库
- 文本分类模型(一)——RCNN
- shell------免交互
- 用c语言完成一个正方形面积计算器,C语言编程问题(面积计算器)——新手问题...
- 建立时间和保持时间的计算
- 《花样年华》经典台词
热门文章
- JavaEE 企业级分布式高级架构师课程_汇总贴
- sql server扫盲系列
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...
- JavaScript 3D图表
- cocos2d-x游戏实例(8)-A星算法(4)
- java基本语文档_Java 文档注释
- python自动测试e_python实现hive自动化测试
- 基于STM32F103ZET6 HC_SR04超声波测距模块
- 【Visual Studio 扩展工具】使用 ComponentOne迷你图控件,进行可视化数据趋势分析... 1
- 以短带长进军网综,西瓜视频能否干过“优爱腾”?