如何阅读PyTorch文档及常见PyTorch错误

如何阅读PyTorch文档及常见PyTorch错误


PyTorch文档查看https://pytorch.org/docs/stable/

image-20240904161104184

image-20240904161329441

torch.nn -> 定义神经网络
torch.optim -> 优化算法
torch.utils.data -> 数据加载 dataset, dataloader类

阅读PyTorch文档示例

torch.max为例

image-20240904161651956

有些函数对不同的输入有不同的行为

Parameters(位置参数):不需要指定参数的名称

Keyword Arguments(关键字参数):必须指定参数的名称

他们通过 * 隔开

带默认值的参数:有些参数有默认值(keepdim=False),所以传递这个参数的值是可选的

image-20240904161820050

三种torch.max的不同输入

  1. 返回整个张量的最大值(torch.max(input) → Tensor)
# 1. max of entire tensor (torch.max(input) → Tensor)
m = torch.max(x)
print(m)

image-20240904214513806

  1. 沿一个维度的最大值 (torch.max(input, dim, keepdim=False, *, out=None) → (Tensor, LongTensor))

    # 2. max along a dimension (torch.max(input, dim, keepdim=False, *, out=None) → (Tensor, LongTensor))
    m, idx = torch.max(x,0)
    print(m)
    print(idx)
    

    image-20240904214724819

    位置参数可以不指定参数的名字,关键字参数必须指定参数名字。以 * 隔开,(位置参数 * 关键字参数)

    # 2-2 位置参数可以不指定参数的名字,关键字参数必须指定参数名字。以 * 隔开,(位置参数 * 关键字参数)
    m, idx = torch.max(input=x,dim=0)
    print(m)
    print(idx)
    

    image-20240904214845204

    # 2-3
    m, idx = torch.max(x,0,False)
    print(m)
    print(idx)
    
    # 2-4
    m, idx = torch.max(x,dim=0,keepdim=True)
    print(m)
    print(idx)
    
    # 2-5
    p = (m,idx)
    torch.max(x,0,False,out=p)
    print(p[0])
    print(p[1])
    

    位置参数可以不指定参数的名字,关键字参数必须指定参数名字。

    image-20240904215101006

  2. 两个张量上的选择最大的(torch.max(input, other, *, out=None) → Tensor)

    # 3. max(choose max) operators on two tensors (torch.max(input, other, *, out=None) → Tensor)
    t = torch.max(x,y)
    print(t)
    

    image-20240904215223304

常见Pytorch错误

Tensor在不同设备上

报错信息:RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument mat2 in method wrapper_mm)

解决方案:将张量移动到GPU

image-20240904215745830

# 1. different device error (fixed)
x = torch.randn(5).to("cuda:0")
y = model(x)
print(y.shape)

维度不匹配

报错信息:RuntimeError: The size of tensor a (5) must match the size of tensor b (4) at non-singleton dimension 1

解决办法:张量的形状不正确,使用transpose,squeeze, unsqueeze来对齐尺寸

image-20240904220743294

# 2. mismatched dimensions error 1 (fixed by transpose)
y = y.transpose(0,1)
z = x + y
print(z.shape)

cuda内存不足

报错信息:RuntimeError: CUDA out of memory. Tried to allocate 7.27 GiB (GPU 0; 4.00 GiB total capacity; 8.67 GiB already allocated; 0 bytes free; 8.69 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

解决方法:数据的批量大小太大,无法装入GPU。减小批量大小。如果对数据进行迭代(batch size = 1),问题就会得到解决。你也可以使用DataLoader

image-20240904221307600

# 3. cuda out of memory error (fixed, but it might take some time to execute)
for d in data:
	out = resnet18(d.to("cuda:0").unsqueeze(0))
print(out.shape)

张量类型不匹配

报错信息:RuntimeError: expected scalar type Long but found Float

解决方法:标签张量类型必须是Long,将其转换为“long”以解决此问题

image-20240904221529335

# 4. mismatched tensor type (fixed)
labels = labels.long()
lossval = L(outs,labels)
print(lossval)

参考

torch.max — PyTorch 2.4 documentation

Hongyi_Lee_dl_homeworks/Warmup/Pytorch_Tutorial_2.pdf at master · huaiyuechusan/Hongyi_Lee_dl_homeworks (github.com)

orial_2.pdf at master · huaiyuechusan/Hongyi_Lee_dl_homeworks (github.com)](https://github.com/huaiyuechusan/Hongyi_Lee_dl_homeworks/blob/master/Warmup/Pytorch_Tutorial_2.pdf)

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyTorch是一个用于机器学习和深度学习的开源库,提供了丰富的API文档,方便用户进行模型构建、训练和推理。 PyTorch的API文档包含详细的函数说明、参数说明和示例代码。文档中涵盖了所有的模块、类和函数的详细用法,使用户可以快速了解每个API的功能和使用方式。 API文档按照模块划分,包括张量操作、神经网络、数据加载、优化器和损失函数等。每个模块的文档会列出所有可用的函数和类,并提供简明的说明和示例代码,用户可以根据需要选择适合的API进行使用。 在API文档中,每个函数和类都会列出其所需的参数和返回值,以及每个参数的说明和示例值。这有助于用户理解API的输入和输出,更好地使用PyTorch库。 此外,API文档还提供了一些常见任务的示例代码,如图像分类、文本生成和语音识别等。这些示例代码可以帮助用户快速入门并在实际项目中应用PyTorch。 总的来说,PyTorch的API文档是一个非常有价值的资源,它提供了丰富的函数和类的详细说明和示例代码,帮助用户了解和使用PyTorch库的各项功能。无论是初学者还是有经验的开发者,都可以从API文档中获得非常有用的信息,加速模型的开发和应用。 ### 回答2: PyTorch API文档PyTorch库提供的官方文档,供用户参考和学习如何使用PyTorch库中的各种函数、类和方法。这些文档详细描述了每个API的功能、输入参数、返回值等信息,并提供了示例代码和使用说明,方便用户理解和使用。 PyTorch API文档覆盖了PyTorch库的各个部分,如张量操作、自动微分、神经网络、优化器、数据加载和转换等。用户可以通过索引或搜索来查找特定API文档,并根据自己的需要学习和使用。 PyTorch API文档的编写目的是帮助用户快速入门和使用PyTorch,减少开发过程中的困惑和错误。通过API文档,用户可以了解每个函数或类的功能和用法,从而更好地利用PyTorch库实现自己的深度学习模型或解决问题。 使用PyTorch API文档时,用户应该通过读取文档中的描述和示例来理解API的使用方法和注意事项。文档中通常也会提供一些常见问题的解答或链接到相关资源,以便用户深入学习和扩展使用。 总之,PyTorch API文档PyTorch库的重要组成部分,提供了用户学习和使用PyTorch的指南。通过阅读和理解这些文档,用户可以更高效地使用PyTorch进行深度学习任务,并在实践中取得更好的结果。 ### 回答3: PyTorch API文档PyTorch深度学习框架的一份重要参考手册,为开发者提供了关于PyTorch库中各个模块、函数、类等的详细说明和使用示例。这个文档包含了PyTorch中的所有API接口,可以帮助开发者更加高效地使用PyTorch进行深度学习任务的开发。 PyTorch API文档的内容结构清晰,按照PyTorch库的模块分类,如torch、torchvision、torchtext等。每个模块下面都有相应的子模块,如torch.Tensor、torch.nn、torch.optim等。开发者可以根据自己的需求,按照模块和子模块的划分去查找并了解具体的函数、类的使用方式和参数说明。 PyTorch API文档提供了对不同模块、子模块的整理分类,方便开发者快速找到所需的API接口。每个接口都有详细的功能说明、参数说明和使用示例,开发者可以通过这些示例代码来学习如何正确地使用这些API接口。 在PyTorch API文档中,还有一些额外的资源,如教程、应用示例等,可以帮助开发者更深入地理解和应用PyTorch的各种功能。 总的来说,PyTorch API文档是一份对PyTorch库中各个模块、函数、类等进行详细说明的文档,可以帮助开发者更好地学习和使用PyTorch进行深度学习任务,是深度学习开发者的重要参考资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值