我正在尝试自定义加载一些带有标签的图像文件(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的适当张量?相关推荐

  1. 解密 | OpenCV加载图像大小是有限制的 ?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 问题来由 最近有人问一个问题,就是它有个大小800MB的图像文件, ...

  2. OpenCV加载图像列表imagelist的实例(附完整代码)

    OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 OpenCV加载图像列表imagelist的实例 #include "opencv2/im ...

  3. 【前端】【cornerstone】【未完善】cornerstone重新加载图像大小问题——拒绝花里胡哨

    [前端][cornerstone][未完善]cornerstone重新加载图像尝试--拒绝花里胡哨 问题 正常加载图像 尝试方法 方法1[无效]:直接修改columnPixelSpacing.rowP ...

  4. 使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作

    使用pytorch自定义DataSet,以加载图像数据集为例,实现一些骚操作 总共分为四步 构造一个my_dataset类,继承自torch.utils.data.Dataset 重写__getite ...

  5. python异步加载图片_如何在PyQt5中正确异步加载图像?

    我在尝试如何在pyqtqlistview中正确地完成异步映像加载.在 我的主小部件由一个Qlistview和一个QLineEdit文本框组成. 我有一个参与者数据库,我使用QAbstractListM ...

  6. c++读取图片_Pytorch读取,加载图像数据(一)

    Pytorch读取,加载图像数据(一) 在学习Pytorch的时候,先学会如何正确创建或者加载数据,至关重要. 有了数据,很多函数,操作的效果就变得很直观. 本文主要用其他库读取图像文件(学会这个,你 ...

  7. go语言html css,html – 在Golang中加载图像和CSS

    我在项目根目录的package main中的server.js中设置了一个路由 http.HandleFunc( "/",route.IndexHandler) IndexHand ...

  8. pytorch入门(二):数据加载和处理

    pytorch入门(二):数据加载和处理 小引 数据加载 引包 数据集 编写辅助函数 显示图像及其特征点 定义数据集类 数据处理 组合变换 遍历数据集 其他注意事项 本章对应pytorch官方文档链接 ...

  9. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化

    python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...

最新文章

  1. stm32cubemx生成不了keil工程文件_STM32CubeMX系列教程03_创建并生成代码工程
  2. Python 一种接触就容易爱上的语言一
  3. php+数学计算公式,PHP数学计算函数总结
  4. Convolutional Neural Networks for Visual Recognition 8
  5. 大厂年薪100万的可视化工程师,水平到底有多牛,看完我服了
  6. Notepad++ 配置 Markdown
  7. java避免活锁.死锁的解决,java并发编程(九): 避免活跃性危险
  8. 我的微博,三层嵌套,
  9. Thin框架的应用(一) 单机双人对战象棋程序
  10. 如何在ionic5 release版本降级安装ionic3
  11. mysql 参照完整性规则_mysql数据的完整性约束(完整)
  12. python通过接口判断公共节假日
  13. flink 任务提交问题汇总
  14. 至多删三个字符(动态规划字符串问题)
  15. Linux连接redis数据库
  16. 文本分类模型(一)——RCNN
  17. shell------免交互
  18. 用c语言完成一个正方形面积计算器,C语言编程问题(面积计算器)——新手问题...
  19. 建立时间和保持时间的计算
  20. 《花样年华》经典台词

热门文章

  1. JavaEE 企业级分布式高级架构师课程_汇总贴
  2. sql server扫盲系列
  3. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...
  4. JavaScript 3D图表
  5. cocos2d-x游戏实例(8)-A星算法(4)
  6. java基本语文档_Java 文档注释
  7. python自动测试e_python实现hive自动化测试
  8. 基于STM32F103ZET6 HC_SR04超声波测距模块
  9. 【Visual Studio 扩展工具】使用 ComponentOne迷你图控件,进行可视化数据趋势分析... 1
  10. 以短带长进军网综,西瓜视频能否干过“优爱腾”?