标签: pytorch

为什么向后设置(retain_graph=True)会占用大量 GPU 内存?

我需要多次通过我的神经网络进行反向传播,所以我设置了backward(retain_graph=True).

然而,这导致

运行时错误:CUDA 内存不足

我不明白这是为什么。

变量或权重的数量是否翻了一番?无论backward()调用多少次,使用的内存量不应该保持不变吗?

python pytorch

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

ValueError:优化器得到一个空的参数列表

我创建了以下简单的线性类:

class Decoder(nn.Module):
    def __init__(self, K, h=()):
        super().__init__()
        h = (K,)+h+(K,)
        self.layers = [nn.Linear(h1,h2) for h1,h2 in zip(h, h[1:])]

    def forward(self, x):
        for layer in self.layers[:-1]:
            x = F.relu(layer(x))
        return self.layers[-1](x)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将参数放在优化器类中时,我得到了错误ValueError: optimizer got an empty parameter list

decoder = Decoder(4)
LR = 1e-3
opt = optim.Adam(decoder.parameters(), lr=LR)
Run Code Online (Sandbox Code Playgroud)

类定义有什么我做的明显错误吗?

pytorch

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

pytorch 中的 ReduceLrOnPlateau 调度程序可以使用测试集指标来降低学习率吗?

嗨,我目前正在 pytroch 中学习调度程序在深度学习中的使用。我遇到了以下代码:

import torch
import torch.nn as nn
import torchvision.transforms as transforms
import torchvision.datasets as dsets

# Set seed
torch.manual_seed(0)

# Where to add a new import
from torch.optim.lr_scheduler import ReduceLROnPlateau

'''
STEP 1: LOADING DATASET
'''

train_dataset = dsets.MNIST(root='./data', 
                            train=True, 
                            transform=transforms.ToTensor(),
                            download=True)

test_dataset = dsets.MNIST(root='./data', 
                           train=False, 
                           transform=transforms.ToTensor())

'''
STEP 2: MAKING DATASET ITERABLE
'''

batch_size = 100
n_iters = 6000
num_epochs = n_iters / (len(train_dataset) / batch_size)
num_epochs = int(num_epochs)

train_loader = torch.utils.data.DataLoader(dataset=train_dataset, 
                                           batch_size=batch_size, 
                                           shuffle=True)

test_loader = torch.utils.data.DataLoader(dataset=test_dataset, …
Run Code Online (Sandbox Code Playgroud)

scheduler deep-learning pytorch

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

libcudart.so.9.0:无法打开共享对象文件:没有这样的文件或目录

我在 Ubuntu 18.04 下使用 Pytorch 并尝试使用import torchvision,但出现错误libcudart.so.9.0: cannot open shared object file: No such file or directory

有人可以帮忙解决吗?谢谢。

下面的信息是详细的错误日志:

Traceback (most recent call last):
  File "/home/x/.local/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2882, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-2-6dd351122000>", line 1, in <module>
    import torchvision
  File "/home/x/pycharm-2019.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/x/.local/lib/python3.6/site-packages/torchvision/__init__.py", line 1, in <module>
    from torchvision import models
  File "/home/x/pycharm-2019.2/helpers/pydev/_pydev_bundle/pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
  File "/home/x/.local/lib/python3.6/site-packages/torchvision/models/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

cuda pytorch torchvision

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

枚举数据加载器时出现 KeyError

我正在尝试遍历初始化如下的 pytorch 数据加载器:

trainDL = torch.utils.data.DataLoader(X_train,batch_size=BATCH_SIZE,shuffle=True,**kwargs)

其中 X_train 是一个像这样的熊猫数据框: 我的熊猫 DF

因此,我无法执行以下语句,因为我在“枚举”中收到 KeyError:

for batch_idx, (data, _) in enumerate(trainDL):
    {stuff}
Run Code Online (Sandbox Code Playgroud)

有没有人知道发生了什么?

编辑:

我得到的错误是:

KeyError                                  Traceback (most recent call last)
~/.local/share/virtualenvs/Pipenv-l_wD1rT4/lib/python3.6/site-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)
   2896             try:
-> 2897                 return self._engine.get_loc(key)
   2898             except KeyError:

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 40592

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-63-95142e0748bb> in <module>
----> 1 for batch_idx, (data, _) …
Run Code Online (Sandbox Code Playgroud)

python keyerror pytorch dataloader

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

PyTorch 中的多标签软边距损失

我想实现一个分类器,它可以有 10 个可能的类中的 1 个。我正在尝试使用 MultiClass Softmax 损失函数来做到这一点。通过文档,我不清楚该功能需要什么输入。

文档说它需要 [N, C] 的两个矩阵,其中一个是输入,另一个是目标。据我所知,输入矩阵将是我的神经网络将计算的矩阵,它具有神经网络对 10 个类别中的每一个类别给出的概率。目标是我从数据集中获得的目标。

文档说 - “目标(N,C) - 用 -1 填充的标签目标确保与输入相同的形状。” 这是什么意思?我是否在不正确的类中传递零并为正确的类传递 -1?

如果有人可以对此进行详细说明并显示甚至可以作为目标矩阵传递的示例二维矩阵,那就太好了。

python softmax pytorch loss-function

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

Pytorch DataLoader 迭代顺序稳定吗?

Pytorch Dataloader 的迭代顺序是否保证相同(在温和条件下)?

例如:

dataloader = DataLoader(my_dataset, batch_size=4,
                        shuffle=True, num_workers=4)
print("run 1")
for batch in dataloader:
  print(batch["index"])

print("run 2")
for batch in dataloader:
  print(batch["index"])

Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试对其进行测试,但它似乎没有修复,两次运行的顺序相同。有没有办法使订单相同?谢谢

编辑:我也试过做

unlabeled_sampler = data.sampler.SubsetRandomSampler(unlabeled_indices)
unlabeled_dataloader = data.DataLoader(train_dataset, 
                sampler=unlabeled_sampler, batch_size=args.batch_size, drop_last=False)
Run Code Online (Sandbox Code Playgroud)

然后遍历数据加载器两次,但结果是相同的不确定性。

iterable deterministic pytorch dataloader

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

CNN pytorch:如何选择参数并在层之间流动

我对 CNN 很陌生,一直在关注以下代码。我无法理解我们如何以及为什么选择 Conv2d() 和 nn.Linear () 的每个参数,因为它们是输出、过滤器、通道、权重、填充和步幅。我确实理解每个的含义。有人可以非常简洁地解释每一层的流程吗?(输入图片尺寸为 32*32*3)

import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)
        self.conv3 = nn.Conv2d(32, 64, 3, padding=1)
        self.pool = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(64 * 4 * 4, 500)
        self.fc2 = nn.Linear(500, 10)
        self.dropout = nn.Dropout(0.25)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = self.pool(F.relu(self.conv3(x)))
        x = x.view(-1, 64 * 4 * 4) …
Run Code Online (Sandbox Code Playgroud)

python neural-network deep-learning conv-neural-network pytorch

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

如何在 pytorch 中使用张量板?

我正在关注 pytorch tensorboard 教程:https ://pytorch.org/tutorials/intermediate/tensorboard_tutorial.html 。

但由于以下错误,我什至无法启动:

from torch.utils.tensorboard import SummaryWriter
Run Code Online (Sandbox Code Playgroud)
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
~/apps/anaconda3/envs/torch/lib/python3.7/site-packages/torch/utils/tensorboard/__init__.py in <module>
      1 try:
----> 2     from tensorboard.summary.writer.record_writer import RecordWriter  # noqa F401
      3 except ImportError:

ModuleNotFoundError: No module named 'tensorboard'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last)
<ipython-input-4-c8ffdef1cfab> in <module>
----> 1 from torch.utils.tensorboard import SummaryWriter
      2 
      3 # default `log_dir` is "runs" - we'll be more specific here
      4 writer …
Run Code Online (Sandbox Code Playgroud)

python python-3.x tensorboard pytorch

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

选择 2D PyTorch 张量的特定行

假设我有一个看起来像这样的 2D 张量:

[[44, 50, 1, 32],
.
.
.
[7, 13, 90, 83]]
Run Code Online (Sandbox Code Playgroud)

以及我想要选择的行索引列表,看起来像这样[0, 34, 100, ..., 745]。如何遍历并创建一个新的张量,该张量仅包含其索引包含在数组中的行?

python indexing pytorch tensor

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