【深度学习】Day1

张量的创建


张量

  • 张量(Tensor):

    PyTorch 张量是一种用于存储多维数组的数据结构,类似于 NumPy 的多维数组,是深度学习里最基础的数据载体

  • 张量按维度分为下面几类:


张量基本创建方式

  • torch.tensor()
    根据给定数据创建张量,小写tensor
    1)传入列表 / 数组,自动推断数据类型

    复制代码
    # 用列表创建张量
    t1=torch.tensor([1,2,3])
    print(t1)  # tensor([1, 2, 3])

    2) 特点:拷贝数据 ,新建张量;
    日常开发首选

  • torch.Tensor()
    大写Tensor,有两种用法:

    1)传入数字形状:创建指定 shape 的张量(内容未初始化,随机垃圾值)

    复制代码
    t2=torch.Tensor(2,3) # 创建2行3列张量
    print(t2)


    2) 传入列表数据:也可以创建张量(不推荐,容易混淆)

    复制代码
    t3=torch.Tensor([1,2,3])
    print(t3)


    3) 注意:大写torch.Tensor默认是float32类型;
    小写torch.tensor会根据输入自动判断类型

  • torch.IntTensor / torch.FloatTensor / torch.DoubleTensor
    1)创建指定数据类型的张量
    (旧 API 写法,新版本更推荐在torch.tensor里用dtype=指定类型)
    2)

    复制代码
    # 整型张量
    t_int=torch.IntTensor([1,2,3])
    # 浮点型张量 float32
    t_float=torch.FloatTensor([1.1,2.2])
    # 双精度浮点 float64
    t_double=torch.DoubleTensor([1.1,2.2])
    
    print(t_int)
    print(t_float)
    print(t_double)

    更推荐写法:

    复制代码
    t = torch.tensor([1, 2, 3], dtype=torch.int32)
    print(t)
  • 重点区分

torch.tensor ()
  • torch.tensor():
    根据传入的数据创建张量,可以传入数字、numpy 数组、Python 列表,会自动继承输入的数据类型

复制代码
  # 1 创建张量标量(0维张量)
  data=torch.tensor(10)
  print(data)

  data1=np.random.randn(2,3)  # numpy 默认 float64
  data2=torch.tensor(data1)
  print(data2)

  # 3. python 创建列表
  data3=[[1,2,3],[4,5,6]]
  data4=torch.tensor(data3)
  print(data4)
  • 关键点
    1)torch.tensor(10) :传入单个数字,生成0 维标量张量 ,
    输出tensor(10),不是数组形式
    2)numpy 数组转张量
    a)numpy 的浮点数默认是float64,所以生成的张量dtype=torch.float64 b)torch.tensor()会拷贝一份数据 ,新张量和原 numpy 数组互不影响
    3)Python 列表创建张量
    a)列表里写带小数点数字10.,代表浮点数,PyTorch 默认转成float32 b)两层列表[[...],[...]] → 2 维张量(矩阵)

torch.Tensor ()
  • 两种写法

    1)传数字(形状参数):创建指定形状的张量,不初始化,

    里面是内存里残留的随机垃圾值

    2)传列表:创建带指定数据的张量

    默认数据类型:float32

复制代码
  # 1. 创建2行3列的张量,只指定形状,里面的值没初始化的随机值
  data=torch.Tensor(2,3)
  print(data)

  # 2. 传入列表,按照列表数据创建张量
  data1=torch.Tensor([10,20,30])
  print(data1)
  data2=torch.Tensor([10])
  print(data2)
  • 核心对比

torch.IntTensor/ FloatTensor / DoubleTensor
  • 传数字((2,3)):创建指定形状、对应数据类型的未初始化张量(内存残留垃圾值)

  • 传列表数据:自动把里面元素强制转换成对应类型

复制代码
  # 1. 创建2行3列,dtype=int32 的张量,没初始化,里面的是随机脏整数
  data=torch.IntTensor(2,3)
  print(data)

  # 2. 传入浮点列表,自动强制转成int32,小数直接砍掉,不是四舍五入,是截断
  data1=torch.IntTensor([2.5,3.3])
  print(data1)

  # 3. 其他旧版类型
  data2=torch.ShortTensor()  # int 16
  data3=torch.LongTensor()  # int 64
  data4=torch.FloatTensor()  # int 32
  data5=torch.DoubleTensor()  # int 64
  • 新版推荐写法
    1)torch.tensor() + 指定 dtype 参数,可读性更好

    复制代码
    data=torch.tensor([2.5,3.3],dtype=torch.int32)
    print(data)

创建线性 , 随机张量


torch.arange () 和 torch.linspace ()
  • torch.arange(start, end, step)

    1)按步长生成张量,区间是左闭右开 [start, end),不包含 end

    复制代码
    data=torch.arange(0,10,2)
    print(data)

    start=0,end=10,步长 step=2

    取值:0,2,4,6,8;下一个是 10,等于 end,所以不取

    生成的是整数张量

相关推荐
ggabb16 小时前
英语:对新科技新技术命名,词根拼接 + 借用旧词 + 缩写泛滥
人工智能·科技
LK_0716 小时前
【Agent】工具调用的安全边界:从模型输出到程序执行
人工智能·笔记·python·agent
土星云SaturnCloud16 小时前
基于 PP-OCR 的车牌识别:从数据整理到土星云 SE110S 系列边缘部署
人工智能·ai·ocr·边缘计算
zz_nj16 小时前
中兴微方案 MIFI
人工智能
打工仔折腾 AI16 小时前
鸿蒙移动端直连 Windows 远程桌面配置与性能调优实践
人工智能·windows·后端·python·华为·性能优化·harmonyos
AI_work16 小时前
43 号令下招投标全流程留痕分析:电子卷宗 15 年保存与投标人文档合规体系重构
大数据·人工智能·ai·重构
技灵AI16 小时前
AI 开箱视频怎么做?用创意开场带出商品展示
人工智能·prompt·aigc
王亚博_Abel16 小时前
AI 编程时代怎么选前端框架?同一个应用让 Agent 用 12 种框架各写 5 遍,我整理出这套选型方法
前端·人工智能·前端框架
低调小一16 小时前
客户端开发者学 Eino(01):从一次模型调用理解 Agent 架构
人工智能·架构·eino
武汉星际互动16 小时前
政务大厅软硬件升级改造怎么做?
人工智能·政务