pytorch基础知识学习

pytorch基础知识学习



前言

介绍了基于pytorch的深度学习,介绍了pytorch表示的数据类型和数据的初始化方式,每一种数据类型的初始化方式均有例子说明,小白也能看懂


一、pytorch的数据类型

pythonpytorch
IntIntTensor of size()
floatFloatTensor of size()
Int arrayIntTensor of size[d1,d2,d3…]
Float arrayFloatTensor of size[d1,d2,d3…]
string
  • pytorch仅用于数据计算,不具备string的表示方式,一般采用独热码的形式进行表示
  • One-hot
  • Embedding:Word2vec或glove

需要注意的是对于相同的Tensor而言,放置在CPU中的Tensor和放置在GPU中的Tensor的数据类型是不一样
例如在cpu中的类型为:torch.FloatTensor
在Gpu中的类型则为:torch.cuda.FloatTensor

1.类型检验

代码如下(示例):

#新建立一个两维的Tensor,也就是建立一个随机的两行三列的Tensor
a = torch.randn(2,3) 
a.type() #打印a的类型,可以得出a的类型为'torch.FloatTensor'
#也可以采用如下的方式
type(a) #python自带的方法只能显示为torch.Tensor,信息显示不完整

#判断一个参数的类型是否为假定的类型:
isinstance(a,torch.FloatTensor) #此时的结果为True

将cpu中运行的数据类型转换成gpu中运行的数据类型

#使用上面创建的Tensor,a
isinstance(a,torch.cuda.FloatTensor) #结果为False
#转换,使用cuda()函数可以返回一个Tensor的cuda数据类型
a = a.cuda()
isinstance(a,torch.cuda.FloatTensor) #返回的值为True

2.数据类型介绍

  1. 标量
    表示一个维度为0的Tensor,采用如下的方式进行初始化:
初始化一个数字为1的标量
torch.tensor(1.) 
#查看标量的形状
a.shape #输出的结果为torch.Size([])
#使用len()函数查看
len(a.shape) #结果为0
#使用size()函数查看
a.size(). #结果为torch.Size([])
  1. 维度为一的张量
#初始化
torch.tensor([1.1]) #数据的结果为tensor([1.1000])
#使用FloatTensor(),随机生成指定个数的Tensor
torch,FloatTensor(2) #得到结果为tensor([3.2,4.6])
#使用numpy的方式进行生成
data = np.ones(2) #此时data的类型为array([1.,1.])
torch.from_numpy(data)
tensor([1.1,1.1],dtype=torch.float64)
  1. 维度为2的张量
#初始化
a = torch.randn(2,3) #初始化一个2行3列二维张量
#查看a的形状
a.shape #输出为torch.Size([2,3])
a.size(0) #输出的结果为2
a.size(1)#输出的结果为3
a.shape[1]#输出的结果为3

6.维度为3的张量

a = torch.rand(1,2,3)
a.shape  #结果为torch.Size([1,2,3])
a[0]#可以找到后面两维度的第一个值
list(a.shape) #结果为[1,2,3]
  1. 维度为4的张量
    a = torch.randn(2,3,28,28)

3.补充

  • 得到数据的个数
#初始化张量
a = torch.randn(2,3,28,28)
#求出a含有的数据个数
a.numel() #计算的结果为2 * 3 * 28 * 28
#得到a的维度
a.dim() #结果为4

二、创建Tensor

1.从numpy创建

import numpy as np
import torch
a = np.array([2,3.3])
a = torch.from_numpy(a) #得到的结果为Tensor([2.0000,3.3000],dtype =Float64)
b  = np.ones([2,3])
b = torch.from_numpy(b) 
#得到的结果为tensor([[1,1,1],[1,1,1]],dtype= float64)

2.初始化Tensor

  • Torch.empty(d1,d2,d3)
  • Torch.FloatTensor(d1,d2,d3)
    最好不要是使用直接的数据进行初始化,例如Torch.FloatTensor([1,2,3])这种行为应该被禁止
  • Torch.IntTenssor(d1,d2,d3)
    使用上述的方法进行初始化的时候,只是作为一个数据大小进行了占位,并没有实际的数据进入,未初始化的数据包含的数据大小是随机的,所以在后续操作中,应当对数据进行填充。

3.设置默认的数据类型

#未更改默认数据类型时,默认的数据类型为floatTensor
torch.tensor([1.2,3]).type() #此时的数据类型为floatTensor
#更改默认的数据类型
torch.set_default_tensor_type(torch.DoubleTensor)
torch.tensor([1,.2,3]).type() #此时的数据类型为torch.DoubleTensor

4.随机设置Tensor

  • rand函数:
    初始化数据范围:[0,1] 均匀分布
    使用例子:torch.rand(2,3)生成一个随机的2* 3的Tensor
  • randint(min,max,[2,3])
    前面规定范围,后面实现对于形状的要求
  • randn()正态分布(0,1)之间波动
  • full()函数,将tensor中的数据全部赋值为同一个值
    torch.full([2,3],7)此时将tensor中的数据全部为2 * 3的全部为7的Tensor
torch.full([2,3],7)#生成一个2 * 3的全为7的Tensor
torch.full([],7)#生成标量7
torch.full([1],7)#生成一个向量7

#生成等差数列
torcha.arrange(0,10,2) #生成的结果为 tensor([0,2,4,6,8])
  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PyTorch是一个开源的机器学习框架,主要用于构建深度学习模型。下面是一些PyTorch基础代码知识: 1. 张量(Tensor)操作: - 创建张量:使用`torch.tensor()`函数可以创建一个张量。 - 张量的属性:可以使用`.shape`属性获取张量的形状,使用`.dtype`属性获取张量的数据类型。 - 张量的运算:可以进行加减乘除等基本运算,也可以使用函数`torch.add()`, `torch.sub()`, `torch.mul()`, `torch.div()`等进行运算。 2. 自动求导(Autograd): - 自动求导:PyTorch使用自动求导机制来计算梯度。要启用自动求导,只需将`requires_grad=True`设置为张量的参数。 - 梯度计算:通过调用`.backward()`方法可以计算张量的梯度。 - 禁用梯度跟踪:可以使用`torch.no_grad()`上下文管理器来禁用梯度的跟踪。 3. 神经网络模块: - 搭建网络:使用`torch.nn.Module`类可以定义神经网络模块。需要实现两个方法:`__init__()`和`forward()`。 - 参数优化:使用`torch.optim`模块可以定义优化器,如SGD、Adam等。可以通过`optimizer.zero_grad()`清零梯度,`optimizer.step()`更新参数。 4. 数据加载: - 数据集:可以使用`torch.utils.data.Dataset`类来定义自己的数据集。 - 数据加载器:使用`torch.utils.data.DataLoader`类可以创建数据加载器,用于批量加载数据。 5. 训练模型: - 训练循环:通常使用两个嵌套的循环来训练模型,外循环用于迭代训练轮数,内循环用于迭代数据批次。 - 前向传播和反向传播:在内循环中,通过前向传播计算输出,然后计算损失,最后使用反向传播计算梯度并更新参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值