【PyTorch】——创建张量、展示、改变大小、array和tensor的转换、Autograd求导

一、引言

     深度学习框架武林盟主之争的历历史,大概是这个样子的。15年底之前Caffe是老大哥,随着Tensorflow的诞生,霸占江湖数载,19年起无论从学术界还是工程界PyTorch已经霸占了半壁江山!

二、张量和矩阵的联系

一维张量是向量,二维张量是矩阵,张量可以是多维的,张量包含矩阵。

三、创建张量

(1)构建一个6x3的未初始化的矩阵

import torch
x=torch.empty(6,3)
x

结果:

 (2)创建随机矩阵

x=torch.rand(5,3)
x

结果:

(3)初始化零矩阵dtype是long类型

x=torch.zeros(5,3,dtype=torch.long)
x

结果;

 

四、size()、view()等同于numpy中的shape()、reshape() 

 

x=torch.zeros(5,3,dtype=torch.long)
x.size()

结果:

x=torch.randn(4,4)
y=x.view(16)
z=x.view(-1,8) #-1代表自动进行计算16/8=2这个意思
print(x.size(),y.size(),z.size())

 结果:

五、tensor和array相互转换 

(1)torch转array

a=torch.ones(5)
b=a.numpy()
b

结果:

(2)array转tenor

import numpy as np
a=np.ones(5)
b=torch.from_numpy(a)
b

 结果:

 六、Autograd: 自动求导

当完成(正向)计算之后, 我们可以调用backward(),PyTorch会自动的把所有的梯度都计算好。与这个tensor相关的梯度都会累加到它的grad属性里。

如果不想计算这个tensor的梯度,我们可以调用detach(),这样它就不会参与梯度的计算了。

 

x=torch.rand(1)
b=torch.rand(1,requires_grad=True)#设置了代表可以求导,不设置代表常量
w=torch.rand(1,requires_grad=True)
y=w*x
z=y+b
z.backward()
w.grad
b.grad
x

结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值