pytorch1

pytorch基础

1、Tensor

最基本的操作对象,tensor:
在这里插入图片描述
在这里插入图片描述
tensor就是张量的英文,表示多维的矩阵,比如一维就是向量,二维就是一般的矩阵等等,pytorch里面处理的单位就是一个一个的tensor
可以显示的得到其大小
在这里插入图片描述
这个和numpy很相似,同时tensor和numpy.array之间也可以相互转换
在这里插入图片描述

运算和numpy也类似
x = torch.rand(5, 4)
y = torch.rand(5, 4)
c = 3

加:
在这里插入图片描述
在这里插入图片描述
乘:
在这里插入图片描述

将 torch.Tensor 放到 GPU 上在这里插入图片描述

Variable

pytorch和numpy不一样的地方就来了,就是其提供了自动求导功能,也就是可以自动给你你要的参数的梯度,这个操作由另外一个基本元素提供Variable
torch 和大部分框架一样有着自动求导功能,对象不再是 torch.Tensor,而是torch.autograd.Variable
在这里插入图片描述
本质上Variable和Tensor没有区别,不过Variabel会放入一个计算图,然后进行前向传播,反向传播以及自动求导

一个Variable里面包含着三个属性,data,grad和creator,其中creator表示得到这个Variabel的操作,比如乘法或者加法等等,grad表示方向传播的梯度,data表示取出这个Variabel里面的数据。

from torch.autograd import Variable

# requires_grad 表示是否对其求梯度,默认是False
x = Variable(torch.Tensor([3]), requires_grad=True)
y = Variable(torch.Tensor([5]), requires_grad=True)
z = 2 * x + y + 4

# 对 x 和 y 分别求导
z.backward()

# x 的导数和 y 的导数
print('dz/dx: {}'.format(x.grad.data))
print('dz/dy: {}'.format(y.grad.data))

在这里插入图片描述

神经网络部分

所依赖的主要是 torch.nn 和 torch.nn.functional

torch.nn 里面有着所有的神经网络的层的操作,其用来构建网络,只有执行一次网络的运算才执行一次

torch.nn.functional 表示的是直接对其做一次向前运算操作。


from torch import nn
import torch.nn.functional as F

# 基本的网络构建类模板
class net_name(nn.Module):
    def __init__(self):
        super(net_name, self).__init__()
        # 可以添加各种网络层
        self.conv1 = nn.Conv2d(3, 10, 3)
        # 具体每种层的参数可以去查看文档
        
    def forward(self, x):
        # 定义向前传播
        out = self.conv1(x)
        return out

这就是构建所有神经网络的模板,不管你想构建卷积神经网络还是循环神经网络或者是生成对抗网络都依赖于这个结构。

以上内容学习于:https://github.com/L1aoXingyu/pytorch-beginner/blob/master/00-Pytorch%20Basics/basic.ipynb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值