我需要多次通过我的神经网络进行反向传播,所以我设置了backward(retain_graph=True).
然而,这导致
运行时错误:CUDA 内存不足
我不明白这是为什么。
变量或权重的数量是否翻了一番?无论backward()调用多少次,使用的内存量不应该保持不变吗?
我创建了以下简单的线性类:
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)
类定义有什么我做的明显错误吗?
嗨,我目前正在 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) 我在 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) 我正在尝试遍历初始化如下的 pytorch 数据加载器:
trainDL = torch.utils.data.DataLoader(X_train,batch_size=BATCH_SIZE,shuffle=True,**kwargs)
因此,我无法执行以下语句,因为我在“枚举”中收到 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) 我想实现一个分类器,它可以有 10 个可能的类中的 1 个。我正在尝试使用 MultiClass Softmax 损失函数来做到这一点。通过文档,我不清楚该功能需要什么输入。
文档说它需要 [N, C] 的两个矩阵,其中一个是输入,另一个是目标。据我所知,输入矩阵将是我的神经网络将计算的矩阵,它具有神经网络对 10 个类别中的每一个类别给出的概率。目标是我从数据集中获得的目标。
文档说 - “目标(N,C) - 用 -1 填充的标签目标确保与输入相同的形状。” 这是什么意思?我是否在不正确的类中传递零并为正确的类传递 -1?
如果有人可以对此进行详细说明并显示甚至可以作为目标矩阵传递的示例二维矩阵,那就太好了。
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)
然后遍历数据加载器两次,但结果是相同的不确定性。
我对 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
我正在关注 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) 假设我有一个看起来像这样的 2D 张量:
[[44, 50, 1, 32],
.
.
.
[7, 13, 90, 83]]
Run Code Online (Sandbox Code Playgroud)
以及我想要选择的行索引列表,看起来像这样[0, 34, 100, ..., 745]。如何遍历并创建一个新的张量,该张量仅包含其索引包含在数组中的行?
pytorch ×10
python ×6
dataloader ×2
cuda ×1
indexing ×1
iterable ×1
keyerror ×1
python-3.x ×1
scheduler ×1
softmax ×1
tensor ×1
tensorboard ×1
torchvision ×1