PyTorch学习特殊注意点+模型验证+训练参数固定+显卡

本文介绍了PyTorch中的一些基础操作,包括Tensor的副本、view的使用、item()函数的功能、索引操作的特点以及Tensor与NumPy之间的相互转换方法。此外还探讨了GPU上的Tensor操作及数据类型的更改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基础操作

  1. Tensor的副本

view只会改变数据的表面形状,共享data,但是view后的Tensor和之前的Tensor不是一个id,因为还有一些其他属性。
推荐先用clone创造一个副本再使用view
使用clone还有一个好处是会被记录在计算图中,即梯度回传到副本时也会传到源Tensor
参考此处

x_cp = x.clone().view(15)
  1. 常用函数item()

将一个标量Tensor转换成一个Python number

x = torch.randn(1)
print(x)
print(x.item())
tensor([2.3466])
2.3466382026672363
  1. 索引操作不会开辟新内存-----用作数据迭代是等内存替换

y = y + x是新开内存,再用y指向新内存;

以下四种是写入y对应的内存
y[:] = y + x
torch.add(x, y, out=y)
y += x
y.add_(x)

  1. Tensor和NumPy相互转换

共享相同的内存(所以他们之间的转换很快),改变其中一个时另一个也会改变!!!
共享内存的方式:a.numpy()转numpy、torch.from_numpy(a)转Tensor
不共享内存:torch.tensor(a)转Tensor

  1. GPU上的Tensor和to()同时可以更改数据类型
# 以下代码只有在PyTorch GPU版本上才会执行
if torch.cuda.is_available():
    device = torch.device("cuda")          # GPU
    y = torch.ones_like(x, device=device)  # 直接创建一个在GPU上的Tensor
    x = x.to(device)                       # 等价于 .to("cuda")
    z = x + y
    print(z)
    print(z.to("cpu", torch.double))       # to()还可以同时更改数据类型

TORCH.TENSOR官方文档

含有学习率变化的更新方式

李宏毅2021的self attention

PyTorch中的model.modules(), model.children(), model.named_children(), model.parameters()的区别与联系

参考


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值