【无标题】

3dgs源码学习:python基础知识补充

torch.nn.Parameter

orch.nn.Parameter是torch.Tensor的一个子类,使用它可以方便地声明模型的可学习参数。与一般的Tensor不同,Parameter会被自动添加到模型的参数列表中,并且可以被自动更新。与普通的Tensor一样,Parameter也可以进行各种张量运算,例如加法、乘法和卷积等。
优势
首先,Parameter对象的存在使得模型的结构更加清晰,我们可以通过查看模型的参数列表来了解模型的参数情况。这对模型的可读性和可维护性都有很大的帮助。

其次,Parameter对象的更新是自动进行的,无需手动编写参数的更新代码。PyTorch会自动追踪所有依赖于Parameter的计算过程,并在反向传播时更新参数的梯度。这样,我们就不必担心遗漏了某个参数的更新操作,提高了代码的健壮性。

最后,Parameter对象的使用非常方便。我们可以像使用普通张量一样使用Parameter,进行各种张量运算,例如加法、乘法和卷积等。这使得我们可以直接对参数进行操作,而无需额外的转换操作。

contiguous()

将原来张量重新复制一份新的,不改变元数据的值,只改变复制后的值


```python
x = torch.randn(3, 2)
y = torch.transpose(x, 0, 1)
print("修改前:")
print("x-", x)
print("y-", y)
 
print("\n修改后:")
y[0, 0] = 11
print("x-", x)
print("y-", y)

运行结果:
运行结果:

修改前:
x- tensor([[-0.5670, -1.0277],
           [ 0.1981, -1.2250],
           [ 0.8494, -1.4234]])
y- tensor([[-0.5670,  0.1981,  0.8494],
           [-1.0277, -1.2250, -1.4234]])
 
修改后:
x- tensor([[11.0000, -1.0277],
           [ 0.1981, -1.2250],
           [ 0.8494, -1.4234]])
y- tensor([[11.0000,  0.1981,  0.8494],
           [-1.0277, -1.2250, -1.4234]])```

使用contiguous()
调用contiguous()时,会强制拷贝一份tensor,让它的布局和从头创建的一模一样,但是两个tensor完全没有联系


x = torch.randn(3, 2)
y = torch.transpose(x, 0, 1).contiguous()
print("修改前:")
print("x-", x)
print("y-", y)
 
print("\n修改后:")
y[0, 0] = 11
print("x-", x)
print("y-", y)``

运行结果:

修改前:
x- tensor([[ 0.9730,  0.8559],
           [ 1.6064,  1.4375],
           [-1.0905,  1.0690]])
y- tensor([[ 0.9730,  1.6064, -1.0905],
           [ 0.8559,  1.4375,  1.0690]])
 
修改后:
x- tensor([[ 0.9730,  0.8559],
           [ 1.6064,  1.4375],
           [-1.0905,  1.0690]])
y- tensor([[11.0000,  1.6064, -1.0905],
           [ 0.8559,  1.4375,  1.0690]])
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值