创作不易 觉得有帮助请点赞关注收藏~~~
一、PyTorch的Reduction操作
Reduction运算的特点是它往往对一个Tensor内的元素做归约操作,比如torch.max找极大值,torch.cumsum计算累加,它还提供了dim参数来指定沿矩阵哪个维度执行操作
测试效果如下
torch.unique用于找出矩阵中出现了哪些元素
测试代码如下
import torch a=torch.tensor([[1,2],[3,4]]) print("全局最大值",torch.max(a)) print(torch.max(a,dim=0)) print("沿着横轴计算每一列的累加",torch.cumsum(a,dim=0)) print("沿着纵轴累计",torch.cumsum(a,dim=1)) a=torch.randint(0,3,(3,3)) print(a) print(torch.unique(a))
二、PyTorch的自动微分
将Tensor的requires_grad属性设置为True时,PyTorch的torch.autograd会自动地追踪它的计算轨迹,当需要计算微分的时候,只需要对最终计算结果的Tensor调用backward方法,中间所有计算节点的微分就会被保存在grad属性当中了
测试效果如下
测试代码如下
import torch a=torch.tensor([[1,2],[3,4]]) print("全局最大值",torch.max(a)) print(torch.max(a,dim=0)) print("沿着横轴计算每一列的累加",torch.cumsum(a,dim=0)) print("沿着纵轴累计",torch.cumsum(a,dim=1)) a=torch.randint(0,3,(3,3)) print(a) print(torch.unique(a)) ############ x=torch.arange(9).view(3,3) print(x.requires_grad) x=torch.rand(3,3,requires_grad=True) print(x) w=torch.ones(3,3,requires_grad=True) y=torch.sum(torch.mm(w,x)) print(y) print(y.backward()) print(y.grad) print(x.grad) print(w.grad)