pytorch 基础学习--自用笔记(一)

本文介绍了PyTorch的基本操作,包括创建张量、张量大小查询、与numpy间的转换、张量运算以及GPU支持。还讲解了PyTorch的自动求导功能,通过Variable实现计算图的构建和反向传播。最后,概述了神经网络的构建,使用nn.Module和nn.functional创建简单的网络结构。
摘要由CSDN通过智能技术生成
#导入必要的库
import torch
import numpy as np

torch 基本处理单元

# 返回的数组大小5x4的矩阵
torch.Tensor(5, 4)

在这里插入图片描述

# 返回的数组大小是5x4的矩阵,初始化是0~1的均匀分布
torch.rand(5, 4)

在这里插入图片描述

# 得到矩阵大小
a = torch.rand(5, 4)
a.size()

在这里插入图片描述

# numpy 类似的返回5x4大小的矩阵
np.ones((5, 4))

在这里插入图片描述

# numpy 和 torch.Tensor 之间的转换
a = torch.rand(5, 4)
b = a.numpy()
print(b)

在这里插入图片描述

a = np.array([[3, 4], [3, 6]])
b = torch.from_numpy(a)
print(b)

在这里插入图片描述

运算和numpy类似

x = torch.rand(5, 4)
y = torch.rand(5, 4)
c = 3


print(c * x)

在这里插入图片描述

print(x + y)

在这里插入图片描述

print(x.add(y))

在这里插入图片描述

# 可以直接进行操作改变原对象,x+y或者x.add()并不会改变x,但是x.add_()则会对x进行改变
x.add_(y)

在这里插入图片描述

print(x)

在这里插入图片描述

将 torch.Tensor 放到 GPU 上

# 判断一下电脑是否支持GPU
torch.cuda.is_available()

在这里插入图片描述

a = torch.rand(5, 4)
a = a.cuda()
print(a)

在这里插入图片描述

### torch 的自动求导功能
torch 和大部分框架一样有着自动求导功能,对象不再是 torch.Tensor,而是torch.autograd.Variable

本质上Variable和Tensor没有什么区别,不过Variable会放在一个计算图里面,可以进行前向传播和反向传播以及求导  

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值