Tensor 基本操作1 | PyTorch 深度学习实战

目录

创建 Tensor

使用 Torch 接口创建 Tensor

复制代码
import torch

参考:https://pytorch.org/tutorials/beginner/basics/tensorqs_tutorial.html

常用操作

unsqueeze

将多维数组解套,并嵌入新的一层维度。

复制代码
    data = [[1, 2],[3, 4]]
    x_data = torch.tensor(data)
    print("x_data")
    print(x_data)

    x2_data = x_data.unsqueeze(-1)
    print("x_data>> unsqueeze -1")
    print(x2_data)

    x2_data = x_data.unsqueeze(0)
    print("x_data>> unsqueeze 0")
    print(x2_data)

    x2_data = x_data.unsqueeze(1)
    print("x_data>> unsqueeze 1")
    print(x2_data)

    x2_data = x_data.unsqueeze(2)
    print("x_data>> unsqueeze 2")
    print(x2_data)

结果:

复制代码
x_data
tensor([[1, 2],
        [3, 4]])
x_data>> unsqueeze -1   # -1 代表最内层,将最内层的数用一个新的维度包起来
tensor([[[1],
         [2]],

        [[3],
         [4]]])
x_data>> unsqueeze 0 # 0 代表最外层,将原来的多维数组整个多套一层
tensor([[[1, 2],
         [3, 4]]])
x_data>> unsqueeze 1 # 代表原来第一维里的每个元素,套一层
tensor([[[1, 2]],

        [[3, 4]]])
x_data>> unsqueeze 2 # 代表原来第二维里的每个元素,套一层
tensor([[[1],        # 当前一共两维,所以效果和 -1 一样
         [2]],

        [[3],
         [4]]])

squeeze

去掉指定或全部的维度中只有一个元素的多维数组。

比如输入为 Ax1xBxCx1xD 维的数组,输出变成了 AxBxCxD 维的数组。

https://pytorch.org/docs/stable/generated/torch.squeeze.html

复制代码
    data = [[1], [2],[3], [4]]
    x_data = torch.tensor(data)
    print("x_data")
    print(x_data)

    x2_data = x_data.squeeze()
    print("x_data>> squeeze")
    print(x2_data)

    x2_data = x_data.squeeze(1)
    print("x_data>> squeeze 1")
    print(x2_data)

结果:

复制代码
x_data
tensor([[1],
        [2],
        [3],
        [4]])
x_data>> squeeze
tensor([1, 2, 3, 4])
x_data>> squeeze 1
tensor([1, 2, 3, 4])

Softmax

https://pytorch.org/docs/stable/generated/torch.softmax.html

归一化操作。

代码1
复制代码
    data = torch.tensor([1,2,3], dtype=torch.float) # 维度 3; 注意,此处 dtype 是 int 或 long 接口报错
    x_data = torch.softmax(data, 0)
    print("x_data")
    print(x_data)

结果:

复制代码
x_data
tensor([0.0900, 0.2447, 0.6652])  # 维度 3
代码2
复制代码
    data = torch.tensor([[1],[2],[3]], dtype=torch.float) # 维度 3x1
    x_data2 = torch.softmax(data, 0)
    print("x_data2")
    print(x_data2)

结果:

复制代码
x_data2  # 维度 3x1
tensor([[0.0900],
        [0.2447],
        [0.6652]])
代码3
复制代码
    data = torch.tensor([[1],[2],[3]], dtype=torch.float) # 维度 3x1
    x_data2 = torch.softmax(data, 1) # 沿着第一维求
    print("x_data2")
    print(x_data2)

结果:

复制代码
x_data2
tensor([[1.],
        [1.],
        [1.]])

此时,每维都是 1 个元素,针对自身求 softmax,所以,结果是 1.

argmax

https://pytorch.org/docs/stable/generated/torch.argmax.html

返回一个多维数组的最大值的索引,如果是多维数组,则返回第一维的索引。

item

https://pytorch.org/docs/stable/generated/torch.Tensor.item.html

返回一个 Tensor 中携带的 Python Number 对象。该接口只对 Tensor 是一维的有效。

复制代码
x = torch.tensor([1.0])
x.item()
相关推荐
听风吹等浪起1 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
拜小白1 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍1 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular1 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康1 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区1 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng1 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人1 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
lovingsoft1 小时前
AI 时代未来软件形态趋势:从固定功能应用,走向意图驱动、智能体原生的柔性系统-浅析
人工智能
GlobalInfo2 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人