【PyTorch练习】tensor的一般计算;定义新的 Autograd 函数;设计一个CNN网络(附详细步骤解释)

这篇博客通过实践介绍了PyTorch中的tensor操作,如何自定义Autograd函数,以及如何使用nn包设计一个包含多次卷积的CNN网络。内容包括:创建和操作tensor,实现sigmoid函数的正反向传播,以及搭建包含3次卷积、池化和全连接层的CNN模型。同时,博客提供了网络参数的查看和训练数据的处理方法。
摘要由CSDN通过智能技术生成

【PyTorch练习】tensor的一般计算;定义新的 Autograd 函数

参考网站:PyTorch官方文档:https://pytorch.apachecn.org/#/docs/1.7/11

在看完文档之后,我们会觉得,虽然明白了,但是缺乏练习很容易忘记,因此做自己设计了一些练习来加深记忆,可以自己做下这些题目,做完基本也完全记住语法了,是很好的学习的手段,毕竟看了懂了和动手实践了,是两件事情。之后复习的时候,这些练习题也是很好的东西。(还给出了参考答案帮助复习,很贴心了是不是~)

tensor的一般操作

(1)输入为一个3*3的矩阵,这个矩阵需要先从一个列表开始变成tensor的形式,然后将这个tensor重写成为一个随机的tensor,之后利用形状的方式生成一个3 *3的矩阵,把这个矩阵利用矩阵乘法对于自身进行运算之后,叠到第一个矩阵后面

a = [[1,2,3],[2,3,5],[4,2,7]]
a = torch.tensor(a)
a = torch.rand_like(a,dtype = torch.float)
b = torch.rand((3,3,))
b = b @ b.T # b.matmul(b.T)
c = torch.cat([a,b],dim=1)

(2)输入为一个4* 4的矩阵,这个矩阵需要先从一个列表开始变成tensor的形式,然后将这个tensor重写成为一个全为1的tensor,之后使用直接定义形状的方式,建立一个4*4的随机张量,查看矩阵的数据类型,形状,存储方式等参数,和第一个tensor做乘法之后,完成张量转化到GPU运行

a = [[1,2,3,4],[5,2,1,8],[2,1,9,10],[3,2,1,6]]
a = torch.tensor(a)
a = torch.ones_like(a)
b = torch.rand((4,4))
print(b.dtype)
print(b.shape)
print(b.device)
b = b*a  # b.mul(b)
if torch.cuda.is_available():
    b = b.to("cuda")

重新定义Autograd完成计算

(3)自己定义一个函数(建议定义选自网络中有关的,比如和sigmoid函数),写一个类继承autograd中的函数方法,在类的内部重写函数的正向和反向传播(其实就是函数本身和函数的导数),应用这个类,完成用sigmoid和多项式的形式,对一个序列的拟合(这里是一个年份x和报废的情况,1为损坏,最后可以根据使用年限给出报废的概率)

这里的小提示就是,和变量有关的计算,要用torch.下面的,和math无关,不能混在一起的,还有变量也需要在同一个device和dtype下面一起运算(但是在初始化数据的时候可以用math来指定,这个是两个层面的事情)

import torch

# 基本都是固定的语法,定义好之后,torch框架可以帮助自动计算
class sigmoid(torch.autograd.Function):
    @staticmethod
    def forward(ctx,input):
        ctx.save_for_backward(input)
        return 1/(1+torch.exp(-input))
    
    @staticmethod
    def backward(ctx,grad_output):
        input, = ctx.saved_tensors
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值