标签: pytorch

"视图"方法在PyTorch中如何工作?

view()对以下代码片段中的方法感到困惑.

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5)
        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

net = Net()
Run Code Online (Sandbox Code Playgroud)

我的困惑在于以下几行.

x = x.view(-1, 16*5*5)
Run Code Online (Sandbox Code Playgroud)

tensor.view()功能有什么作用?我已经在许多地方看到了它的用法,但我无法理解它如何解释它的参数.

如果我将负值作为参数给view()函数会发生什么?例如,如果我打电话会发生什么tensor_variable.view(1, 1, -1)

任何人都可以view()通过一些例子解释功能的主要原理吗?

python memory torch pytorch tensor

144
推荐指数
5
解决办法
9万
查看次数

在PyTorch中保存训练模型的最佳方法?

我正在寻找在PyTorch中保存训练模型的替代方法.到目前为止,我找到了两种选择.

  1. torch.save()保存模型,torch.load()加载模型.
  2. model.state_dict()用于保存训练有素的模型,而model.load_state_dict()用于加载已保存的模型.

我已经讨论过这种讨论,其中建议方法2优于方法1.

我的问题是,为什么第二种方法更受欢迎?是否因为torch.nn模块具有这两个功能而我们被鼓励使用它们?

python serialization deep-learning pytorch tensor

136
推荐指数
6
解决办法
9万
查看次数

Pytorch,什么是梯度参数

我正在阅读PyTorch的文档,并找到了他们编写的示例

gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)
print(x.grad)
Run Code Online (Sandbox Code Playgroud)

其中x是一个初始变量,从中构造y(一个3向量).问题是,渐变张量的0.1,1.0和0.0001参数是什么?文档不是很清楚.

gradient neural-network gradient-descent torch pytorch

100
推荐指数
4
解决办法
1万
查看次数

如何检查pytorch是否正在使用GPU?

我想知道是否pytorch正在使用我的GPU.可以nvidia-smi在进程中检测GPU是否有任何活动,但我想要用python脚本编写的东西.

有办法吗?

python memory-management gpu nvidia pytorch

95
推荐指数
10
解决办法
12万
查看次数

model.eval() 在 pytorch 中有什么作用?

我正在使用此代码,并且model.eval()在某些情况下看到了。

我知道它应该允许我“评估我的模型”,但我不明白什么时候应该和不应该使用它,或者如果关闭如何关闭。

我想运行上面的代码来训练网络,并且还能够在每个时期运行验证。我还是做不到。

python machine-learning deep-learning pytorch

93
推荐指数
3
解决办法
8万
查看次数

pytorch中的模型摘要

有什么办法,我可以在PyTorch中打印模型的摘要,就像Keras中的model.summary()方法一样,如下所示?

Model Summary:
____________________________________________________________________________________________________
Layer (type)                     Output Shape          Param #     Connected to                     
====================================================================================================
input_1 (InputLayer)             (None, 1, 15, 27)     0                                            
____________________________________________________________________________________________________
convolution2d_1 (Convolution2D)  (None, 8, 15, 27)     872         input_1[0][0]                    
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D)    (None, 8, 7, 27)      0           convolution2d_1[0][0]            
____________________________________________________________________________________________________
flatten_1 (Flatten)              (None, 1512)          0           maxpooling2d_1[0][0]             
____________________________________________________________________________________________________
dense_1 (Dense)                  (None, 1)             1513        flatten_1[0][0]                  
====================================================================================================
Total params: 2,385
Trainable params: 2,385
Non-trainable params: 0
Run Code Online (Sandbox Code Playgroud)

python pytorch

82
推荐指数
9
解决办法
4万
查看次数

RuntimeError: 输入类型 (torch.FloatTensor) 和权重类型 (torch.cuda.FloatTensor) 应该相同

我正在尝试按如下方式训练以下 CNN,但我一直收到关于 .cuda() 的相同错误,我不知道如何修复它。到目前为止,这是我的一段代码。

import matplotlib.pyplot as plt
import numpy as np
import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
import torchvision
from torchvision import datasets, transforms, models
from torch.utils.data.sampler import SubsetRandomSampler


data_dir = "/home/ubuntu/ML2/ExamII/train2/"
valid_size = .2

# Normalize the test and train sets with torchvision
train_transforms = transforms.Compose([transforms.Resize(224),
                                           transforms.ToTensor(),
                                           ])

test_transforms = transforms.Compose([transforms.Resize(224),
                                          transforms.ToTensor(),
                                          ])

# ImageFolder class to load the train and test images
train_data = datasets.ImageFolder(data_dir, transform=train_transforms)
test_data = datasets.ImageFolder(data_dir, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning python-3.x deep-learning pytorch

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

在 Pytorch 中“unsqueeze”有什么作用?

我无法理解PyTorch 文档中的示例如何对应于解释:

返回一个新的张量,其尺寸为 1,插入到指定位置。[...]

>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1,  2,  3,  4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
        [ 2],
        [ 3],
        [ 4]])
Run Code Online (Sandbox Code Playgroud)

python torch pytorch

71
推荐指数
5
解决办法
6万
查看次数

运行时错误:CUDA 内存不足。如何设置 max_split_size_mb?

我在 Colab Pro+(具有高 RAM 选项)上运行神经网络时发现了这个问题。

运行时错误:CUDA 内存不足。尝试分配 8.00 GiB(GPU 0;15.90 GiB 总容量;12.04 GiB 已分配;2.72 GiB 空闲;PyTorch 总共保留 12.27 GiB)如果保留内存 >> 已分配内存,请尝试设置 max_split_size_mb 以避免碎片。请参阅内存管理和 PYTORCH_CUDA_ALLOC_CONF 的文档

我已经将批量大小减少到 2。我使用该格式上传数据h5py

此时,我认为我唯一可以尝试的就是设置max_split_size_mb.

我找不到任何有关如何实施max_split_size_mb. PyTorch文档对我来说不清楚。

memory runtime-error pytorch google-colaboratory

69
推荐指数
2
解决办法
20万
查看次数

如何在PyTorch中初始化权重?

如何在PyTorch中的网络中初始化权重和偏差(例如,使用He或Xavier初始化)?

python neural-network deep-learning pytorch

60
推荐指数
7
解决办法
8万
查看次数