Pytorch-Spyder的Lua语言的基本操作运算

本文介绍如何使用PyTorch进行张量操作,并通过Autograd模块实现自动微分,适用于深度学习中的反向传播算法。文章展示了张量的基本操作、张量与NumPy之间的转换及GPU加速运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- coding: utf-8 --

“”"
Spyder编辑器

这是一个临时脚本文件.
from future import print_function
import torch as t
x= t.Tensor(5,3)
print(x)
x= t.rand(5,3)#使用【0,1】均匀分布初始化二维数据
print(x)
print(x.size()) #查看X的形状
print(x.size()[1],x.size(1))

#add
y=t.rand(5,3)
x+y
t.add(x,y)
result = t.rand(5,3)
t.add(x,y,out=result)
print(x+y,t.add(x,y),result )
x.add_(y) #函数名后面带下划线的函数会修改Tensor本身如x.t_()会修改x,
print(result,x)
#check Tensor
print(x[:,1])
#Tensor && numpy data interact cope with
a= t.ones(5)
print(a)
b=a.numpy()#Tensor->Numpy
print(b)
import numpy as np
a=np.ones(5)
b=t.from_numpy(a)#Numpy->Tensor
print(a)
print(b)#Tensor和numpy对象共享内存,其中一个变,另外随之改变
b.add_(1)
print(a,b)
#Tensor可通过.cuda方法转为GPU的Tensor,从而享受GPU带来的加速运算
if t.cuda.is_available():
a=a.cuda()
b=b.cuda()
print(a+b)
#Autograd模块:自动微分

深度学习算法的本质就是通过反向传播求导数

#Autograd.Variable是Autograd中的核心类,他简单封装了Tensor,并支持所有的Tensor操作,
#Tensor在被封装成Variable后,可以调用他的.backward实现反向传播,免除手动求导
from torch.autograd import Variable
x=Variable(t.ones(2,2), requires_grad = True)
print(x)
y=x.sum()
print(y)
print(y.grad_fn)

#grad在反向传播过程中是累加的,这就意味着每次运行反向传播,梯度都会累加之前的梯度,所以反向传播之前需把梯度抹零
print(y.backward())
print(x.grad)

print(y.backward())
print(x.grad)
#清零操作 inplace操作,先将自身的梯度清零
x.grad.data.zero_();

print(x.grad)

print(y.backward())
print(x.grad)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值