小编uke*_*emi的帖子

PyTorch 将运算符映射到函数

PyTorch 的所有运算符是什么,它们的功能等价物是什么?

例如,a @ b等价于a.mm(b)a.matmul(b)

我在寻找运算符 -> 函数映射的规范列表。

我很高兴收到 PyTorch 文档链接作为答案 - 我的 googlefu 无法找到它。

operator-overloading pytorch

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

Pytorch - 无法切片 torchvision MNIST 数据集

在Pytorch中,当使用torchvision的MNIST数据集时,我们可以得到一个数字,如下所示:

from torchvision import datasets, transforms
from torch.utils.data import DataLoader, Dataset, TensorDataset

tsfm = transforms.Compose([transforms.Resize((16, 16)),
                           transforms.ToTensor(),
                           transforms.Normalize((0.1307,), (0.3081,))])

mnist_ds = datasets.MNIST(root='../../../_data/mnist',train=True,download=True,
                          transform=tsfm)

digit_12 = mnist_ds[12]
Run Code Online (Sandbox Code Playgroud)

虽然可以对许多数据集进行切片,但我们不能对这个数据集进行切片:

>>> digit_12_to_14 = mnist_ds[12:15]
ValueError: Too many dimensions: 3 > 2.
Run Code Online (Sandbox Code Playgroud)

这是Image.fromarray()由于getItem().

是否可以在不使用 Dataloader 的情况下使用 MNIST 数据集?


PS:我想避免使用 Dataloader 的原因是一次向 GPU 发送一批数据会减慢训练速度。我更喜欢一次性将整个数据集发送到 GPU。为此,我需要访问整个转换后的数据集。

python dataset slice pytorch

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

如何在深度学习中向现有分类器添加新类?

我训练了一个深度学习模型,将给定的图像分为三类。现在我想在我的模型中再添加一个类。我尝试查看“在线学习”,但它似乎是在现有课程的新数据上进行训练。我是否需要在所有四个类别上再次训练我的整个模型,或者有什么方法可以在新类别上训练我的模型?

python deep-learning keras multiclass-classification online-machine-learning

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

Pytorch 挤压和解压

即使查看了文档和相关问题,我也不明白对张量做什么squeezeunsqueeze做什么。

我试图通过自己在 python 中探索它来理解它。我首先创建了一个随机张量

x = torch.rand(3,2,dtype=torch.float)
>>> x
tensor([[0.3703, 0.9588],
        [0.8064, 0.9716],
        [0.9585, 0.7860]])
Run Code Online (Sandbox Code Playgroud)

但无论我如何挤压它,我最终都会得到相同的结果:

torch.equal(x.squeeze(0), x.squeeze(1))
>>> True
Run Code Online (Sandbox Code Playgroud)

如果我现在尝试解压,我会得到以下信息,

>>> x.unsqueeze(1)
tensor([[[0.3703, 0.9588]],
        [[0.8064, 0.9716]],
        [[0.9585, 0.7860]]])
>>> x.unsqueeze(0)
tensor([[[0.3703, 0.9588],
         [0.8064, 0.9716],
         [0.9585, 0.7860]]])
>>> x.unsqueeze(-1)
tensor([[[0.3703],
         [0.9588]],
        [[0.8064],
         [0.9716]],
        [[0.9585],
         [0.7860]]])
Run Code Online (Sandbox Code Playgroud)

但是,如果我现在创建一个 tensor x = torch.tensor([1,2,3,4]),并且我尝试将其解压缩,那么它看起来1-1使其成为0保持不变的列。

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

python pytorch

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

从 Django 登录表单中的电子邮件中删除区分大小写

我创建了一个自定义 UserModel 并使用电子邮件作为主要的身份验证 ID 而不是用户名。

它区分大小写的问题,因为它将 test@gmail.com,Test@gmail.com 计为 2 个不同的帐户。

我需要强制它处理 1 个帐户,而忽略它是大写还是小写。

这是我的文件:

模型.py

class UserModelManager(BaseUserManager):
    def create_user(self, email, password, pseudo):
        user = self.model()
        user.name = name
        user.email = self.normalize_email(email=email)
        user.set_password(password)
        user.save()

        return user

    def create_superuser(self, email, password):
        '''
        Used for: python manage.py createsuperuser
        '''
        user = self.model()
        user.name = 'admin-yeah'
        user.email = self.normalize_email(email=email)
        user.set_password(password)

        user.is_staff = True
        user.is_superuser = True
        user.save()

        return user


class UserModel(AbstractBaseUser, PermissionsMixin):
    ## Personnal fields.
    email = models.EmailField(max_length=254, unique=True)
    name = models.CharField(max_length=16)
    ## [...] …
Run Code Online (Sandbox Code Playgroud)

python django

7
推荐指数
2
解决办法
5225
查看次数

为什么为 numpy 函数选择名称“arange”?

numpy 函数arange被这样命名是否有特定原因?

人们习惯性地使错字arrange,假定它是拼写为英文单词,所以选择似乎是因为其他较含糊拼写选项(监督的东西range等)是由numpy的使用。

它被选作的混成一个rray和范围

python naming numpy naming-conventions pep

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

如何在python中的数据框中按行查找值的索引并提取以下列的值

我有以下使用熊猫的数据框

df = pd.DataFrame({'Last_Name': ['Smith', None, 'Brown'], 
                   'Date0': ['01/01/1999','01/06/1999','01/01/1979'], 'Age0': [29,44,21],
                   'Date1': ['08/01/1999','07/01/2014','01/01/2016'],'Age1': [35, 45, 47],
                   'Date2': [None,'01/06/2035','08/01/1979'],'Age2': [47, None, 74],
                   'Last_age': [47,45,74]})
Run Code Online (Sandbox Code Playgroud)

我想添加新的列来获取与'Last_age'每一行中出现的值相对应的日期,以获得类似的内容:

df = pd.DataFrame({'Last_Name': ['Smith', None, 'Brown'], 
                   'Date0': ['01/01/1999','01/06/1999','01/01/1979'], 'Age0': [29,44,21],
                   'Date1': ['08/01/1999','07/01/2014','01/01/2016'],'Age1': [35, 45, 47],
                   'Date2': [None,'01/06/2035','08/01/1979'],'Age2': [47, None, 74],
                   'Last_age': [47,45,74],
                   'Last_age_date': ['Error no date','07/01/2014','08/01/1979']})
Run Code Online (Sandbox Code Playgroud)

python pandas

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

PyTorch 卷积“in_channels”和“out_channels”的含义?

从Convolution 的PyTorch文档中,我看到该函数torch.nn.Conv1d需要用户传递参数in_channelsout_channels

我知道这些指的是“输入通道”和“输出通道”,但我不确定它们在卷积的上下文中意味着什么。我的猜测是,这in_channels相当于输入特征,也out_channels相当于输出特征,但我不确定。

有人可以解释一下这些论点指的是什么吗?

python deep-learning conv-neural-network pytorch

7
推荐指数
2
解决办法
9727
查看次数

为什么我们要在pytorch中使用to()方法?

这个方法我已经见过很多次了。这样做的目的和好处是什么?

python pytorch

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

如何修复pytorch中的“输入和隐藏张量不在同一设备上”

当我想将模型放在 GPU 上时,出现以下错误:

“运行时错误:输入张量和隐藏张量不在同一设备上,在 cuda:0 处找到输入张量,在 cpu 处找到隐藏张量”

但是,以上所有内容都已放在 GPU 上:

for m in model.parameters():
    print(m.device) #return cuda:0
Run Code Online (Sandbox Code Playgroud)
for m in model.parameters():
    print(m.device) #return cuda:0
Run Code Online (Sandbox Code Playgroud)

Windows 10 服务器
Pytorch 1.2.0 + cuda 9.2
cuda 9.2
cudnn 7.6.3 for cuda 9.2

python gpu python-3.x lstm pytorch

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