标签: pytorch

NameError:名称“transforms”未定义,而使用 google colab

train = datasets.MNIST("", train=True, download=True,transform = transforms.Compose([transforms.ToTensor()]))
test = datasets.MNIST("", train=False, download=True,transform = transforms.Compose([transforms.ToTensor()]))`
Run Code Online (Sandbox Code Playgroud)

在 colab notebook 上执行此操作后,出现此错误:

Traceback (most recent call last)
<ipython-input-6-b81aa6cf1cbe> in <module>()
----> 1 train = datasets.MNIST("", train=True, download=True,transform = transforms.Compose([transforms.ToTensor()]))
      2 test = datasets.MNIST("", train=False, download=True,transform = transforms.Compose([transforms.ToTensor()]))

NameError: name 'transforms' is not defined*
Run Code Online (Sandbox Code Playgroud)

python mnist pytorch google-colaboratory torchvision

1
推荐指数
1
解决办法
5681
查看次数

当我们在 PyTorch 张量上调用 cpu().data.numpy() 会发生什么?

我正在做一个项目,需要将损失张量中的数据传递给绘图库。

当我执行此调用时会发生什么 -> loss.cpu().data.numpy()

是否有从计算图中分离张量的风险?

machine-learning pytorch

1
推荐指数
1
解决办法
1009
查看次数

无法导入手电筒音频“没有可用的音频后端。”

import torchaudio
Run Code Online (Sandbox Code Playgroud)

当我尝试在 Pycharm 上导入手电筒音频时,出现此错误

61: UserWarning: No audio backend is available.
Run Code Online (Sandbox Code Playgroud)

warnings.warn('没有可用的音频后端。')

python-3.x torch pytorch

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

基于 Pytorch 的 Resnet18 在 CIFAR100 上实现了低精度

我正在 CIFAR100 数据集上训练 resnet18。在大约 50 次迭代之后,验证准确度收敛在大约 34%。而训练准确率几乎达到了100%。

我怀疑它有点过拟合,所以我应用了像RandomHorizontalFlipand这样的数据增强RandomRotation,这使得验证收敛在大约 40%。

我还尝试了衰减学习率[0.1, 0.03, 0.01, 0.003, 0.001],每 50 次迭代后衰减。衰减学习率似乎并没有提高性能。

听说 CIFAR100 上的 Resnet 可以达到 70%~80% 的准确率。我还能应用什么技巧?或者我的实现有什么问题吗?同样的代码在 CIFAR10 上可以达到 80% 左右的准确率。

我的整个培训和评估代码如下:

import torch
from torch import nn
from torch import optim
from torch.utils.data import DataLoader
from torchvision.models import resnet18
from torchvision.transforms import Compose, ToTensor, RandomHorizontalFlip, RandomRotation, Normalize
from torchvision.datasets import CIFAR10, CIFAR100
import os
from datetime import datetime
import matplotlib.pyplot as plt


def draw_loss_curve(histories, legends, save_dir):
    os.makedirs(save_dir, …
Run Code Online (Sandbox Code Playgroud)

python pytorch

1
推荐指数
1
解决办法
2484
查看次数

神经网络中的回归问题是否需要归一化

我正在学习如何使用 PyTorch 构建神经网络。这个公式是我代码的目标:y =2 X^3 + 7 X^2 - 8*X + 120

这是一个回归问题。

我使用它是因为它很简单,并且可以计算输出,这样我就可以确保我的神经网络能够根据给定的输入预测输出。

但是,我在训练过程中遇到了一些问题。问题出现在这行代码中:

loss = loss_func(prediction, outputs)
Run Code Online (Sandbox Code Playgroud)

在这一行中计算的损失是 NAN(不是数字)

我使用 MSEloss 作为损失函数。100 个数据集用于训练 ANN 模型。输入 X_train 的范围从 -1000 到 1000。

我认为问题出在 X_train 和 MSEloss 的值上。X_train 应该缩放到 0 到 1 之间的一些值,以便 MSEloss 可以计算损失。

但是,在回归问题中,是否可以在不将输入缩放为 0 到 1 之间的值的情况下训练 ANN 模型?

这是我的代码,它不使用 MinMaxScaler 并使用 NAN 打印损失:

import torch
import torch.nn as nn
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import torch.nn.functional as F
from torch.autograd …
Run Code Online (Sandbox Code Playgroud)

python neural-network pytorch

1
推荐指数
1
解决办法
1219
查看次数

使用 torch.load() 时我的检查点文件有问题

当我torch.load用来加载一个检查点时:

torch.load('./latest_net_G.pth', map_location='cpu')
Run Code Online (Sandbox Code Playgroud)

我收到运行时错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/opt/conda/lib/python3.7/tarfile.py in nti(s)
    186             s = nts(s, "ascii", "strict")
--> 187             n = int(s.strip() or "0", 8)
    188         except ValueError:

ValueError: invalid literal for int() with base 8: '_v2\nq\x03(('

During handling of the above exception, another exception occurred:

InvalidHeaderError                        Traceback (most recent call last)
/opt/conda/lib/python3.7/tarfile.py in next(self)
   2288             try:
-> 2289                 tarinfo = self.tarinfo.fromtarfile(self)
   2290             except EOFHeaderError as e:

/opt/conda/lib/python3.7/tarfile.py in fromtarfile(cls, tarfile)
   1094         buf = tarfile.fileobj.read(BLOCKSIZE) …
Run Code Online (Sandbox Code Playgroud)

python-3.x deep-learning pytorch

1
推荐指数
1
解决办法
1330
查看次数

多维张量的前 K 个指数

我有一个二维张量,我想获得前 k 个值的索引。我知道pytorch 的 topk功能。pytorch 的 topk 函数的问题在于,它计算某个维度上的 topk 值。我想获得两个维度的 topk 值。

例如对于以下张量

a = torch.tensor([[4, 9, 7, 4, 0],
        [8, 1, 3, 1, 0],
        [9, 8, 4, 4, 8],
        [0, 9, 4, 7, 8],
        [8, 8, 0, 1, 4]])

Run Code Online (Sandbox Code Playgroud)

pytorch 的 topk 函数会给我以下信息。

values, indices = torch.topk(a, 3)

print(indices)
# tensor([[1, 2, 0],
#        [0, 2, 1],
#        [0, 1, 4],
#        [1, 4, 3],
#        [1, 0, 4]])

Run Code Online (Sandbox Code Playgroud)

但我想得到以下

tensor([[0, 1],
        [2, 0],
        [3, 1]])

Run Code Online (Sandbox Code Playgroud)

这是 …

python matrix-indexing pytorch tensor

1
推荐指数
1
解决办法
1591
查看次数

Pytorch maxpooling over channels维度

我试图用Pytorch建立一个cnn,并且难以进行最大化.我采取了斯坦福大学持有的cs231n.正如我记得的那样,maxpooling可以用作维度推导步骤,例如,我有这个(1,20,高度,宽度)输入ot max_pool2d(假设我的batch_size是1).如果我使用(1,1)内核,我想得到这样的输出:(1,1,高度,宽度),这意味着内核应该在通道维度上滑动.但是,在检查了pytorch文档之后,它说内核在高度和宽度上滑动.感谢Pytorch论坛上的@ImgPrcSng告诉我使用max_pool3d,结果表明效果很好.但是在conv2d层的输出和max_pool3d层的输入之间仍然存在重塑操作.所以很难被聚合到一个nn.Sequential,所以我想知道还有另一种方法吗?

python neural-network max-pooling pytorch

0
推荐指数
2
解决办法
2867
查看次数

为什么每次保存模型的哈希值都会改变?

我正在使用torch.save()来保存模型文件.但是,每次我保存它,它都会改变.为什么这样?

netG_1 = torch.load('netG.pth')
netG_2 = torch.load('netG.pth')

torch.save(netG_1, 'netG_1.pth')
torch.save(netG_2, 'netG_2.pth')
Run Code Online (Sandbox Code Playgroud)

使用md5sum *.pth:

779f0fefca47d17a0644033f9b65e594  netG_1.pth
476f502ec2d1186c349cdeba14983d09  netG_2.pth
b0ceec8ac886a11b79f73fc04f51c6f9  netG.pth
Run Code Online (Sandbox Code Playgroud)

该模型是此类的一个实例:

https://github.com/taoxugit/AttnGAN/blob/master/code/model.py#L397

python pytorch

0
推荐指数
1
解决办法
62
查看次数

尝试将双线性层转换为onnx时,上采样ONNX提供INVALID_GRAPH

当我将在Pytorch上训练有双线性层的网络转换为ONNX时,出现以下错误

RuntimeError:[ONNXRuntimeError]:10:INVALID_GRAPH:从test.onnx加载模型失败:类型错误:节点()中运算符(Floor)的输入参数(11)的类型'tensor(int64)'无效。

我不确定为什么会发生此错误,我尝试从源代码构建ONNX,但问题似乎并没有解决。

关于什么可能导致此错误的任何想法?或如何解决这个问题?

繁殖方式

from torch import nn

import torch
import torch.nn.functional as F
import onnxruntime as rt

class Upsample(torch.nn.Module):
    def forward(self, x):
        #l = nn.Conv2d(3, 3, kernel_size=1, stride=1, padding=1, bias=True)
        return F.interpolate(x, scale_factor=2, mode="bilinear", align_corners=False)

m = Upsample()
v = torch.randn(1,3,128,128, dtype=torch.float32, requires_grad=False)

torch.onnx.export(m, v, "test.onnx")
sess = rt.InferenceSession("test.onnx")
Run Code Online (Sandbox Code Playgroud)

pytorch onnx

0
推荐指数
1
解决办法
236
查看次数