2.2.1 创建Tensor - 2.2.2 操作

网址:
https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter02_prerequisite/2.2_tensor?id=_222-%e6%93%8d%e4%bd%9c
常用语句考察

x = torch.empty(5, 3)
x = torch.rand(5, 3)
x = torch.zeros(5, 3, dtype=torch.long)
x = torch.tensor([5.5, 3])
x = x.new_ones(5, 3, dtype=torch.float64) 
x = torch.randn_like(x, dtype=torch.float)
print(x) 
print(x.size())
print(x.shape)
import torch
x = torch.rand(5, 3)
print(x)
print(x + y)
print(torch.add(x, y))
import torch
x = torch.rand(5, 3)
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(x)
print(y)
print(x+y)
print(result)
import torch
x = torch.rand(5, 3)
y.add_(x)
print(y)

https://blog.csdn.net/dake13/article/details/81302450

https://blog.csdn.net/dake13/article/details/81302450
#切片索引  切片是原结构的照片  改变切片中的元素  原结构跟着改变
a = np.arange(15).reshape(5,3)
print(a)
b1 = a[:2,2]
print()
print(b1)
b1[0] = 16
print(a)
import torch
x = torch.rand(5, 3)
print(x)
y = x[0, :]
y += 1
print(y)
print(x[0, :]) # 源tensor也被改了
import torch
y = torch.rand(5, 3)
y = x.view(15)
z = x.view(-1, 5)  # -1所指的维度可以根据其他维度的值推出来
print(x.size(), y.size(), z.size())

x += 1
print(x)
print(y) # 也加了1

所以如果我们想返回一个真正新的副本(即不共享data内存)该怎么办呢?Pytorch还提供了一个reshape()可以改变形状,但是此函数并不能保证返回的是其拷贝,所以不推荐使用。推荐先用clone创造一个副本然后再使用view

import torch
x = torch.rand(5, 3)
x_cp = x.clone().view(15)
x -= 1
print(x)
print(x_cp)

使用clone还有一个好处是会被记录在计算图中,即梯度回传到副本时也会传到源Tensor。

import torch
x = torch.randn(1)
print(x)
print(x.item())

线性代数

另外,PyTorch还支持一些线性函数,这里提一下,免得用起来的时候自己造轮子,具体用法参考官方文档。如下表所示:
PyTorch中的Tensor支持超过一百种操作,包括转置、索引、切片、数学运算、线性代数、随机数等等,可参考官方文档。
官方文档
https://pytorch.org/docs/stable/tensors.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值