当前位置:网站首页>pytorch总结学习系列-操作
pytorch总结学习系列-操作
2022-06-29 08:31:00 【TJMtaotao】
算术操作
在PyTorch中,同一种操作可能有很多种形式,下⾯用加法作为例⼦。
加法形式⼀
x = torch.tensor([5.5, 3])
y = torch.rand(5, 3)
print(x + y)
加法形式⼆
print(torch.add(x, y))
还可指定输出:
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
加法形式三、inplace
# adds x to y
y.add_(x)
print(y)
索引
我们还可以使⽤用类似NumPy的索引操作来访问 Tensor 的⼀部分,需要注意的是:索引出来的结果与
原数据共享内存,也即修改一个,另一个会跟着修改。
y = x[0, :]
y += 1
print(y)
print(x[0, :]) # 源tensor也被改了了
除了常⽤的索引选择数据之外,PyTorch还提供了一些高级的选择函数:

改变形状
⽤用 view() 来改变 Tensor 的形状:
y = x.view(15)
z = x.view(-1, 5) # -1所指的维度可以根据其他维度的值推出来
print(x.size(), y.size(), z.size())
输出
torch.Size([5, 3]) torch.Size([15]) torch.Size([3, 5])
注意 view() 返回的新tensor与源tensor共享内存(其实是同⼀一个tensor),也即更更改其中的⼀一个,另
外⼀一个也会跟着改变。(顾名思义,view仅仅是改变了了对这个张量量的观察⻆角度)
x += 1
print(x)
print(y) # 也加了1
所以如果我们想返回⼀个真正新的副本(即不共享内存)该怎么办呢?Pytorch还提供了了⼀一
个 reshape() 可以改变形状,但是此函数并不不能保证返回的是其拷⻉贝,所以不不推荐使⽤用。推荐先
用 clone 创造一个副本然后再使⽤ view
x_cp = x.clone().view(15)
x -= 1
print(x)
print(x_cp)
使⽤用 clone 还有⼀一个好处是会被记录在计算图中,即梯度回传到副本时也会传到源 Tensor 。
另外⼀一个常⽤用的函数就是 item() , 它可以将⼀一个标量 Tensor 转换成⼀一个Python number:
x = torch.randn(1)
print(x)
print(x.item())
输出
tensor([2.3466])
2.3466382026672363
线性代数
另外,PyTorch还⽀支持一些线性函数,不用自⼰造轮⼦,具体用法参考官⽅
文档。如下表所示:

边栏推荐
- 微信小程序最新canvas2d手写签名
- Open3d farthest point sampling (FPS)
- 今天让你知道PMP考试通过率达97%,可信不可信
- AugFPN:改进多尺度特征学习用于目标检测
- AugFPN:改進多尺度特征學習用於目標檢測
- Figure timers in SOC (I): what timers are there in the system?
- What exactly does Devops mean?
- Detecting and counting tiny faces
- 单例模式的理解
- Solutions to ineffective uniapp import components
猜你喜欢

Debug H5 page -vconsole

train_ on_ Batch save the image of the loss function change

在 golang 中是如何对 epoll 进行封装的?

Uber前安全主管面临欺诈指控 曾隐瞒数据泄露事件

Keras to tf Vgg19 input in keras_ shape
Working for many years, recalling life -- three years in high school

【目标检测】|指标 A probabilistic challenge for object detection

微积分学习

keras转tf.keras中VGG19 input_shape

SSD Improvement cfenet
随机推荐
H5软键盘问题
Open3D 最远点采样(FPS)
verilog 移位操作符
超融合架构和传统架构有什么区别?
Unity C# 网络学习(十二)——Protobuf生成协议
Network learning of pointnet
Multiplier design (pipeline) Verilog code
Open3d farthest point sampling (FPS)
单例模式的理解
微信小程序打开文件流
微信小程序搜索关键字高亮和ctrl+f搜索定位实现
Wechat applet project: wechat applet page layout
2022年7月产品经理认证招生简章(NPDP)
General multiplier design, verilog code
微信小程序最新canvas2d手写签名
一般乘法器设计,verilog code
微信小程序wx.navigateBack返回上一页携带参数
SSD Improvement cfenet
[to.Net] C data model, from Entity Framework core to LINQ
MT-yolov6训练及测试