Pytorch学习笔记系列-Torch基本操作

目录

 

1.Pytorch介绍与安装

1.1 介绍

1.2 Pytorch安装

2 Torch

2.1 Tensor构造

2.1.1 torch.from_numpy构造 - 维度任意

2.1.2 使用数组直接构造 - 维度任意

2.1.3 torch.eye构造 - 多维

2.1.4 torch.linspace构造 - 一维

2.1.5 torch.logspace 构造 - 一维

2.1.6 torch.ones构造 - 多维

2.1.7 torch.zeros构造 - 多维

2.1.8 torch.rand构造 - 均匀分布 - 多维

2.1.9 torch.randn - 标准正态分布 - 多维

2.1.10 torch.randperm - 一维

2.1.11 torch.arange - 一维


1.Pytorch介绍与安装

1.1 介绍

PyTorch是一个开源的Python机器学习库,它是一个基于Python的可续计算包,提供两个高级功能:

1、具有强大的GPU加速的张量计算(如NumPy)


Pytorch中都是以张量(tensor)这种结构进行运算的,torch提供了各种张量计算的方法,torch工具库类似于Python中的Numpy库,Numpy中的核心结构为ndarrays,而torch中的核心结构为tensor,同时torch提供了高效的基于GPU的运算,如果你的设备支持GPU计算,则是一个非常好的选择,GPU的运算效率会明显高于CPU的运算效率。

2、包含自动求导系统的深度神经网络


在经典的人工神经网络中,神经网络的学习是在隐藏层中进行的,而所谓的学习过程是通过输出层的误差去调节网络中的权重,通过构建误差与权重的函数,使用梯度下降法计算误差最小时的权重变化,从而调节权重,达到学习的目的。

而torch中提供了自动求导的方法,可通过配置 requires_grad=True达到自动求导的目的,十分便捷,同时torch.nn 中也提供了构建神经网络的各种方法,种种因素都为Pytorch提供了充足的竞争优势,可以在深度学习中大展拳脚,目前来看深度学习已经融入了生活中的方方面面,图像处理、自然语言处理等等。

1.2 Pytorch安装

Pytorch官网提供了安装的详细命令,可以通过选择自己的操作系统、Python版本、是否为GPU等条件,选择好后复制提供的命令到终端进行安装即可。

我自己的操作系统为macos,未使用GPU加速,Python版本为3.6,安装命令为

pip install torch==1.2.0,torchvision==0.4.0

目前最新的torch版本为1.5.0,在安装时可以使用 ==  指定版本安装。

2 Torch

在学习一个工具库之前需要了解其基础的功能函数, torch 包含了多维张量的数据结构以及基于其上的多种数学操作。另外,它也提供了多种工具,其中一些可以更有效地对张量和任意类型进行序列化。下面对torch库中的方法进行介绍。

2.1 Tensor构造

2.1.1 torch.from_numpy构造 - 维度任意

import torch
import numpy as np
np_data = np.arange(3)
tensor = torch.from_numpy(np_data)
print(np_data)
print(tensor)

上述程序使用numpy构造的数据构造tensor,numpy的arange构造 [0,1,2] 的一维数组,然后使用torch库的from_numpy函数将数据转换为tensor,输出结果如下图所示:

 

 2.1.2 使用数组直接构造 - 维度任意

还可以通过直接传入数据进行构造,程序如下:

import torch
tensor = torch.Tensor(
    [[1,2,3],
     [4,5,6]]
)
print(tensor)

使用torch的Tensor函数将二维数组转换为tensor。

 

2.1.3 torch.eye构造 - 多维

torch.eye 用于构造对角线元素均为 1、其他元素均为0 的二维张量,使用格式如下图所示:

  • 参数 m 为张量的行,类型为int
  • 参数 n 为可选参数,表示张量的列,不写时代表列数同行数。
torch.eye(m,n)  

通过以下程序构造了3个二维张量: 

import torch
a = torch.eye(3,3)
b = torch.eye(3)
c = torch.eye(3,2)

 

运行结果验证了可选参数 列,即张量a与张量b是完全一致的,若张量不是方阵,则会根据行数或列数的最小值选择一个方阵,并使其对角元素均为1.

2.1.4 torch.linspace构造 - 一维

torch.linspace(start, end, steps=100, out=None) → Tensor

返回一个1维张量,包含在区间start 和 end 上均匀间隔steps个点。 输出1维张量的长度为steps,即为100。 

  • 参数start与end均为float类型
  • steps为int类型

 

2.1.5 torch.logspace 构造 - 一维

torch.logspace(start, end, steps=100, out=None) → Tensor

torch.logspace 同 torch.linspace均返回一个1维张量 ,参数相同,但torch.logspace的 区间为10^start -- 10^end,同样是均匀间隔取值。

  • 参数start与end均为float类型
  • steps为int类型

2.1.6 torch.ones构造 - 多维

torch.ones(*sizes, out=None) → Tensor

torch.ones用于构造一个全为1的张量,张量大小通过参数sizes配置,例:

 

2.1.7 torch.zeros构造 - 多维

torch.zeros(*sizes, out=None) → Tensor

torch.zeros用于构造一个全为0的张量,张量大小配置方式同上。

2.1.8 torch.rand构造 - 均匀分布 - 多维

torch.rand(*sizes, out=None) → Tensor

构造由区间 [0,1) 的均匀分布中抽取的一组随机数,张量大小通过设置参数sizes实现,例:

 

2.1.9 torch.randn - 标准正态分布 - 多维

torch.randn(*sizes, out=None) → Tensor

返回一个张量,包含了从标准正态分布(均值为0,方差为 1,即高斯白噪声)中抽取一组随机数,形状由可变参数sizes定义,例:

 

 

2.1.10 torch.randperm - 一维

torch.randperm(n, out=None) → LongTensor

给定参数n,返回一个从0 到n -1 的随机整数排列。参数n为int,返回的张量为一维,

 

2.1.11 torch.arange - 一维

torch.arange(start, end, step=1, out=None) → Tensor

返回一个1维张量,长度为((end−start)/step)的向下取整。包含从startend,以step为步长的一组序列值(默认步长为1)。 

  • start (float) – 序列的起始点
  • end (float) – 序列的终止点
  • step (float) – 相邻点的间隔大小
  • out (Tensor, optional) – 结果张量

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带鱼工作室

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值