pytorch2——Pytorch基础数据结构——张量(深度之眼)

本文详细介绍了PyTorch中的核心数据结构——张量,包括其与向量、矩阵和标量的关系,以及Variable的概念和功能。通过实例演示了张量的创建方法,如直接创建、依据数值创建及依概率分布创建,展示了与NumPy数组之间的内存共享特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前情提要

在上一篇文章中,我们详细介绍了如何搭建一个pytorch的环境,那么本篇文章我们即将揭开pytorch的神秘面纱,了解pytorch中的数据结构——Tensor。


概念问答

张量是什么?张量是一个多维数组。
张量与矩阵、向量、标量的关系是怎么样的呢张量是标量、向量、矩阵的高维拓展
什么是Variable?Variable是 torch.autograd 中的数据类型主要用于封装Tensor ,进行 自动求导
Variable“赋予”张量有什么功能?它赋予了张量一些属性(grad:数据的梯度,grad_fn:创建张量的function,requires_grad:是否需要梯度,is_leaf:是否是叶子节点(张量))

实操(张量的创建)

    方法一:直接创建torch.tensor

     

    
import torch
import numpy as np
    arr = np.ones((3, 3))
    print("ndarray的数据类型:", arr.dtype)
    # t = torch.tensor(arr, device='cuda')在gpu下跑
    t = torch.tensor(arr)

    print(t)
  • 采用torch.from_numpy创建张量,并打印查看ndarray和张量数据的地址
#实验发现:从 torch.from_numpy 创建的 tensor 与原 ndarray 共享内存 ,当修
改其中一个的数据,另外一个也将会被改动
    arr = np.array([[1, 2, 3], [4, 5, 6]])
    t = torch.from_numpy(arr)
    # print("numpy array: ", arr)
    # print("tensor : ", t)

    # print("\n修改arr")
    # arr[0, 0] = 0
    # print("numpy array: ", arr)
    # print("tensor : ", t)

    print("\n修改tensor")
    t[0, 0] = -1
    print("numpy array: ", arr)
    print("tensor : ", t)

 方法二:依据数值创建

    方式比较多,后续会详细罗列,比如torch.zeros()


方法三:依概率分布创建张量

  • 实现torch.normal()创建张量的四种模式(也就是正态分布的四种模式)
mean是标量std是标量
mean是标量std是张量
mean是张量std是标量
mean是张量std是张量
    #python代码的实现
    # mean:张量 std: 张量
    # mean = torch.arange(1, 5, dtype=torch.float)
    # std = torch.arange(1, 5, dtype=torch.float)
    # t_normal = torch.normal(mean, std)
    # print("mean:{}\nstd:{}".format(mean, std))
    # print(t_normal)

    # mean:标量 std: 标量
    # t_normal = torch.normal(0., 1., size=(4,))
    # print(t_normal)

    # mean:张量 std: 标量
    mean = torch.arange(1, 5, dtype=torch.float)
    std = 1
    t_normal = torch.normal(mean, std)
    print("mean:{}\nstd:{}".format(mean, std))
    print(t_normal)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值