IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pytorch学习08:拼接与拆分 -> 正文阅读

[人工智能]pytorch学习08:拼接与拆分

cat

矩阵拼接操作,将符合要求的不同矩阵在某一维度上进行拼接。

cat要求进行拼接的矩阵在非拼接维度上完全相同

import torch

a1 = torch.rand(4, 3, 32, 32)
a2 = torch.rand(5, 3, 32, 32)
a3 = torch.rand(4, 1, 32, 32)
a4 = torch.rand(4, 3, 16, 32)

# 要求其他维度必须相同
print("torch.cat([a1, a2], dim=0): ",
      torch.cat([a1, a2], dim=0).shape)
print("torch.cat([a1, a3], dim=1): ",
      torch.cat([a1, a3], dim=1).shape)
print("torch.cat([a1, a4], dim=2): ",
      torch.cat([a1, a4], dim=2).shape)

在这里插入图片描述

  • 只有需要拼接的维度可以不同,其他维度必须相同

stack

矩阵堆叠,将若干维度完全相同的句子在某一维度上进行堆叠。

stack操作会在指定维度前增加一个维度,然后让后面的维度堆叠起来。

要求堆叠的矩阵维度完全相同

import torch

a1 = torch.rand(4, 3, 16, 32)
a2 = torch.rand(4, 3, 16, 32)
print("torch.cat([a1, a2], dim=2): ",
      torch.cat([a1, a2], dim=2).shape)

# stack会新插入一个维度,使其他维度保持不变
# stack要求两个矩阵维度完全一致
print("torch.stack([a1, a2], dim=2): ",
      torch.stack([a1, a2], dim=2).shape)

a = torch.rand(32, 8)
b = torch.rand(32, 8)
print("torch.stack([a, b], dim=0): ",
      torch.stack([a, b], dim=0).shape)
# 可用于将两个相同的表整合起来,且会保持两张表的独立性

请添加图片描述

  • 要求两个矩阵维度完全相同

split

split可对矩阵按长度进行分割。

split有两种分割模式:

  1. 输入列表:会根据列表中的值进行分割,要求列表值之和等于被分割维度元素个数。
  2. 输入数值:会根据数值进行分割,会分割出若干个等长的矩阵,当剩余长度小于指定长度时,也会将加入返回列表。要求输入数值小于等于被分割维度元素个数。
import torch

a = torch.rand(32, 8)
c = torch.stack([a, a, a, a, a, a], dim=0)

print("c.shape: ", c.shape)

def showSplits(ms):
    for index, m in enumerate(ms):
        print("第{}个tensor的shape为 {}".format(
            index + 1, m.shape
        ))
    print()

# 自定义拆分,列表中每个数表示拆分后目标维度的长度
# 要求列表元素和等于目标维度拆分前的长度
ms = c.split([1, 2, 1, 1, 1], dim=0)
print("c.split([1, 2, 1, 1, 1], dim=0):")
showSplits(ms)

# 按长度拆分,输入的值表示每个拆分后的tensor的目标维度的长度
# 最后一个tensor如果长度不够也会返回
ms = c.split(4, dim=0)
print("c.split(4, dim=0):")
showSplits(ms)

ms = c.split(8, dim=1)
print("c.split(8, dim=1):")
showSplits(ms)

ms = c.split(32, dim=1)
print("c.split(32, dim=1):")
showSplits(ms)

请添加图片描述

chunck

chunck可按照数量对矩阵进行分割,将矩阵分割为指定个数

若矩阵可被均匀分割,则返回指定个数的相同维度矩阵。

若不可被均匀分割,则返回的最后一个矩阵维度会较低。

import torch

a = torch.rand(32, 8)
c = torch.stack([a, a, a, a, a, a], dim=0)

print("c.shape: ", c.shape)

def showSplits(ms):
    for index, m in enumerate(ms):
        print("第{}个tensor的shape为 {}".format(
            index + 1, m.shape
        ))
    print()

# 按个数拆分,输入拆分的个数和维度
ms = c.chunk(2, dim=0)
print("c.chunk(2, dim=0):")
showSplits(ms)

ms = c.chunk(3, dim=0)
print("c.chunk(3, dim=0):")
showSplits(ms)

ms = c.chunk(5, dim=1)
print("c.chunk(5, dim=0):")
showSplits(ms)

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:38:15  更:2021-07-31 16:38:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 8:52:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码