标签: torchvision

“运行时错误:4 维权重 32 3 3 的预期 4 维输入,但得到大小为 [3, 224, 224] 的 3 维输入”?

我正在尝试使用预先训练的模型。这就是问题发生的地方

模型不是应该接收简单的彩色图像吗?为什么它需要 4 维输入?

RuntimeError                              Traceback (most recent call last)
<ipython-input-51-d7abe3ef1355> in <module>()
     33 
     34 # Forward pass the data through the model
---> 35 output = model(data)
     36 init_pred = output.max(1, keepdim=True)[1] # get the index of the max log-probability
     37 

5 frames
/usr/local/lib/python3.6/dist-packages/torch/nn/modules/conv.py in forward(self, input)
    336                             _pair(0), self.dilation, self.groups)
    337         return F.conv2d(input, self.weight, self.bias, self.stride,
--> 338                         self.padding, self.dilation, self.groups)
    339 
    340 

RuntimeError: Expected 4-dimensional input for 4-dimensional weight 32 3 3, but got 3-dimensional input of …
Run Code Online (Sandbox Code Playgroud)

machine-learning computer-vision conv-neural-network pytorch torchvision

29
推荐指数
2
解决办法
4万
查看次数

如何使用 plt.imshow 和 torchvision.utils.make_grid 在 PyTorch 中生成和显示图像网格?

我试图了解 torchvision 如何与 mathplotlib 交互以生成图像网格。生成图像并以迭代方式显示它们很容易:

import torch
import torchvision
import matplotlib.pyplot as plt

w = torch.randn(10,3,640,640)
for i in range (0,10):
    z = w[i]
    plt.imshow(z.permute(1,2,0))
    plt.show()
Run Code Online (Sandbox Code Playgroud)

然而,在网格中显示这些图像似乎并不那么简单。

w = torch.randn(10,3,640,640)
grid = torchvision.utils.make_grid(w, nrow=5)
plt.imshow(grid)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-61-1601915e10f3> in <module>()
      1 w = torch.randn(10,3,640,640)
      2 grid = torchvision.utils.make_grid(w, nrow=5)
----> 3 plt.imshow(grid)

/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py in imshow(X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, shape, filternorm, filterrad, imlim, resample, url, hold, data, **kwargs)
   3203                         filternorm=filternorm, …
Run Code Online (Sandbox Code Playgroud)

python matplotlib imshow pytorch torchvision

14
推荐指数
1
解决办法
3万
查看次数

PyTorch:如何对多个图像应用相同的随机变换?

我正在为包含许多图像对的数据集编写一个简单的转换。作为数据增强,我想对每一对应用一些随机变换,但该对中的图像应该以相同的方式进行变换。\n例如,给定一对两个图像AB,如果A水平翻转,则B必须水平翻转作为A。那么下一对CD应该与A和进行不同的变换B,但是C和 也D以相同的方式进行变换。我正在尝试用下面的方式

\n
import random\nimport numpy as np\nimport torchvision.transforms as transforms\nfrom PIL import Image\n\nimg_a = Image.open("sample_ajpg") # note that two images have the same size\nimg_b = Image.open("sample_b.png")\nimg_c, img_d = Image.open("sample_c.jpg"), Image.open("sample_d.png")\n\ntransform = transforms.RandomChoice(\n    [transforms.RandomHorizontalFlip(), \n     transforms.RandomVerticalFlip()]\n)\nrandom.seed(0)\ndisplay(transform(img_a))\ndisplay(transform(img_b))\n\nrandom.seed(1)\ndisplay(transform(img_c))\ndisplay(transform(img_d))\n
Run Code Online (Sandbox Code Playgroud)\n

然而\xe3\x80\x81上面的代码没有选择相同的转换,并且根据我的测试,它取决于调用的次数transform

\n

有没有办法transforms.RandomChoice在指定时强制使用相同的转换?

\n

python pytorch torchvision

12
推荐指数
1
解决办法
2万
查看次数

如何使用 torch.hub.load 加载本地模型?

我需要避免从网上下载模型(由于安装的机器的限制)。

这可行,但它从互联网下载模型

model = torch.hub.load('pytorch/vision:v0.9.0', 'deeplabv3_resnet101', pretrained=True)
Run Code Online (Sandbox Code Playgroud)

我已将.pth文件和hubconf.py文件放在 /tmp/ 文件夹中,并将我的代码更改为

model = torch.hub.load('/tmp/', 'deeplabv3_resnet101', pretrained=True, source='local')
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,它仍然从互联网上下载模型。我究竟做错了什么?如何在本地加载模型?

只是为了向您提供更多详细信息,我在 Docker 容器中执行所有这些操作,该容器在运行时具有只读卷,因此这就是新文件下载失败的原因。

python machine-learning torch pytorch torchvision

11
推荐指数
2
解决办法
4万
查看次数

错误:运行时错误:在当前进程完成引导阶段之前尝试启动新进程

运行以下脚本后出现错误:

--编码:utf-8--

导入东西

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils import data
from torch.utils.data import DataLoader
import torchvision.transforms as transforms

import cv2

import numpy as np

import csv
Run Code Online (Sandbox Code Playgroud)

Step1:从日志文件中读取

samples = []
with open('data/driving_log.csv') as csvfile:
    reader = csv.reader(csvfile)
    next(reader, None)
    for line in reader:
        samples.append(line)
    
Run Code Online (Sandbox Code Playgroud)

Step2:将数据分为训练集和验证集

train_len = int(0.8*len(samples))
valid_len = len(samples) - train_len
train_samples, validation_samples = data.random_split(samples, lengths=[train_len, valid_len])
Run Code Online (Sandbox Code Playgroud)

Step3a:定义数据加载器的增强、转换过程、参数和数据集

def augment(imgName, angle):
  name = 'data/IMG/' + imgName.split('/')[-1]
  current_image = cv2.imread(name)
  current_image …
Run Code Online (Sandbox Code Playgroud)

python deep-learning torchvision

10
推荐指数
2
解决办法
7660
查看次数

torchvision.transforms.Normalize 是如何操作的?

我不明白标准化是如何Pytorch运作的。

我想将shape张量中所有列的均值0和标准差设置为。1x(2, 2, 3)

一个简单的例子:

>>> x = torch.tensor([[[ 1.,  2.,  3.],
                       [ 4.,  5.,  6.]],

                       [[ 7.,  8.,  9.],
                        [10., 11., 12.]]])

>>> norm = transforms.Normalize((0, 0), (1, 1))
>>> norm(x)
tensor([[[ 1.,  2.,  3.],
         [ 4.,  5.,  6.]],

        [[ 7.,  8.,  9.],
         [10., 11., 12.]]])
Run Code Online (Sandbox Code Playgroud)

因此,应用归一化变换时没有任何变化。这是为什么?

pytorch torchvision

10
推荐指数
1
解决办法
2万
查看次数

没有名为“torchvision.models.utils”的模块

当我使用pytorch=1.10.0、torchvision=0.11.1的环境运行代码时,运行到了from torchvision.models.utils import load_state_dict_from_url 的语句。出现以下错误时会出现:

>>> from torchvision.models.utils import load_state_dict_from_url
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'torchvision.models.utils'
Run Code Online (Sandbox Code Playgroud)

python pytorch torchvision

10
推荐指数
1
解决办法
2万
查看次数

PyTorch 中的运行损失是什么以及它是如何计算的

我在 PyTorch 文档中查看了教程以了解迁移学习。有一句我没看懂。

使用 计算损失后,使用 计算loss = criterion(outputs, labels)运行损失running_loss += loss.item() * inputs.size(0),最后使用 计算epoch 损失running_loss / dataset_sizes[phase]

loss.item()应该用于整个小批量(如果我错了,请纠正我)。即,如果batch_size是 4,loss.item()将给出整个 4 张图像集的损失。如果这是真的,为什么在计算时loss.item()乘以?在这种情况下,这一步不是像一个额外的乘法吗?inputs.size(0)running_loss

任何帮助,将不胜感激。谢谢!

python deep-learning torch pytorch torchvision

9
推荐指数
2
解决办法
6587
查看次数

pytorch torchvision.datasets.ImageFolder FileNotFoundError:找不到类 .ipynb_checkpoints 的有效文件

尝试在 Colab 中使用 pytorch torch.datasets.ImageFolder 加载训练数据。

transform = transforms.Compose([transforms.Resize(400),
                                transforms.ToTensor()])
dataset_path = 'ss/'
dataset = datasets.ImageFolder(root=dataset_path, transform=transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)
Run Code Online (Sandbox Code Playgroud)

我遇到了以下错误:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-27-7abcc1f434b1> in <module>()
      2                                 transforms.ToTensor()])
      3 dataset_path = 'ss/'
----> 4 dataset = datasets.ImageFolder(root=dataset_path, transform=transform)
      5 dataloader = torch.utils.data.DataLoader(dataset, batch_size=20)

3 frames
/usr/local/lib/python3.7/dist-packages/torchvision/datasets/folder.py in make_dataset(directory, class_to_idx, extensions, is_valid_file)
    100         if extensions is not None:
    101             msg += f"Supported extensions are: {', '.join(extensions)}"
--> 102         raise FileNotFoundError(msg)
    103 
    104     return instances

FileNotFoundError: …
Run Code Online (Sandbox Code Playgroud)

machine-learning computer-vision pytorch torchvision pytorch-dataloader

9
推荐指数
1
解决办法
2万
查看次数

PyTorch - 获取 'TypeError: pic 应该是 PIL Image 或 ndarray。得到 &lt;class 'numpy.ndarray'&gt;' 错误

我得到的错误TypeError: pic should be PIL Image or ndarray. Got <class 'numpy.ndarray'>,当我尝试加载非图像数据集通过DataLoader。的版本torchtorchvision1.0.1,和0.2.2.post3分别。Python 的版本3.7.1Windows 10机器上。

这是代码:

class AndroDataset(Dataset):
    def __init__(self, csv_path):
        self.transform = transforms.Compose([transforms.ToTensor()])

        csv_data = pd.read_csv(csv_path)

        self.csv_path = csv_path
        self.features = []
        self.classes = []

        self.features.append(csv_data.iloc[:, :-1].values)
        self.classes.append(csv_data.iloc[:, -1].values)

    def __getitem__(self, index):
        # the error occurs here
        return self.transform(self.features[index]), self.transform(self.classes[index]) 

    def __len__(self):
        return len(self.features)
Run Code Online (Sandbox Code Playgroud)

我设置了加载器:

training_data = AndroDataset('android.csv')
train_loader = DataLoader(dataset=training_data, batch_size=batch_size, shuffle=True) …
Run Code Online (Sandbox Code Playgroud)

python deep-learning torch pytorch torchvision

8
推荐指数
4
解决办法
2万
查看次数