PyTorch 的所有运算符是什么,它们的功能等价物是什么?
例如,a @ b
等价于a.mm(b)
或a.matmul(b)
?
我在寻找运算符 -> 函数映射的规范列表。
我很高兴收到 PyTorch 文档链接作为答案 - 我的 googlefu 无法找到它。
在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 deep-learning keras multiclass-classification online-machine-learning
即使查看了文档和相关问题,我也不明白对张量做什么squeeze
和unsqueeze
做什么。
我试图通过自己在 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) 我创建了一个自定义 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) 我有以下使用熊猫的数据框
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) 从Convolution 的PyTorch文档中,我看到该函数torch.nn.Conv1d
需要用户传递参数in_channels
和out_channels
。
我知道这些指的是“输入通道”和“输出通道”,但我不确定它们在卷积的上下文中意味着什么。我的猜测是,这in_channels
相当于输入特征,也out_channels
相当于输出特征,但我不确定。
有人可以解释一下这些论点指的是什么吗?
当我想将模型放在 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