第四章 PyTorch深度学习基础(1)

本文介绍了如何在PyTorch中使用Tensor对象,包括其数据类型管理、设备指定、矩阵运算(如逐元素乘法和矩阵乘法)、以及利用torch提供的函数创建不同类型的张量数据。
摘要由CSDN通过智能技术生成

一、Tensor对象及其运算

  1. Tensor对象是一个任意维度的矩阵,但是一个Tensor中所有元素的数据类型必须一致。
  2. torch包含的数据类型和普通编程语言的数据类型相似,包含浮点型、有符号整型和无符号整形。
  3. 在使用Tensor数据类型时,可以通过dtype属性指定它的数据类型,device指定它的设备(CPU或GPU)
    import torch
    import numpy as np
    
    # torch.tensor
    print("torch.Tensor 默认为:{}".format(torch.Tensor(1).dtype))
    print("torch.Tensor 默认为:{}".format(torch.tensor(1).dtype))
    # 可以用list构建
    a = torch.tensor([[1, 2], [3, 4]], dtype=torch.float64)
    # 也可以用ndarray构建
    b = torch.tensor(np.array([[1, 2], [3, 4]]), dtype=torch.uint8)
    print(a)
    print(b)
    
    # 通过device指定设备
    cpu0 = torch.device('cpu:0')
    c = torch.ones((2, 2), device=cpu0)
    print(c)
  4. .通过device在CPU上定义变量后,可以在终端上通过nvidia-smi命令查看显卡占用。torch还支持CPU和GPU之间复制变量。

    c = c.to('cpu', torch.double)
    print(c.device)
    b = b.to(cpu0, torch.float)
    print(b.device)
  5. 对Tensor执行算数运算符的运算,是两个矩阵对应元素的运算。torch.mm执行矩阵乘法的运算。

    a = torch.tensor([[1, 2], [3, 4]])
    b = torch.tensor([[1, 2], [3, 4]])
    c = a * b
    print("逐元素相乘:", c)
    c = torch.mm(a, b)
    print("矩阵乘法:", c)
  6. torch.clamp起到分段函数的作用,可以用于去掉矩阵中过小或者过大的元素;

  7. torch.round将小数转为整数;

  8. torch.tanh计算双曲正切函数,该函数将数值映射到(0,1)

    a = torch.tensor([[1, 2], [3, 4]])
    torch.clamp(a, min=2, max=3)
    
    a = torch.tensor([-1.1, 0.5, 0.501, 0.99])
    torch.round(a)
    
    a = torch.Tensor([-3, -2, -1, -0.5, 0, 0.5, 1, 2, 3])
    torch.tanh(a)
  9. 除了ndarray或list类型的数据中创建Tensor,PyTorch还提供了一些可直接创建数据的函数,这些函数往往需要提供矩阵的维度。

  10. torch.arange和Python内置的range的使用方法基本相同,,其中第3个参数是步长。torch.linspace的第3个参数指定返回的个数。torch.ones返回全1,torch返回全0矩阵。

    print(torch.arange(5))
    print(torch.arange(1, 5, 2))
    print(torch.linspace(0, 5, 10))
    print(torch.ones(3, 3))
    print(torch.zeros(3, 3))
  11. torch.rand返回范围为[0,1]的均匀分布采样的元素所组成的矩阵

  12. torch.randn返回从正态分布采样的元素组成的矩阵

  13. torch.randint返回指定区间的均匀分布采样的随机整数所生成的矩阵

    torch.rand(3, 3)
    torch.randn(3, 3)
    torch.randint(0, 9, (3, 3))

 

                            

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值