【torch】如何把把几个 tensor 连接起来?(含源代码)

2023-11-13

一、cat

在 PyTorch 中,要向一个 tensor 中添加元素,你通常需要创建一个新的 tensor,然后将元素添加到新的 tensor 中。PyTorch tensors 是不可变的,所以不能像列表一样直接追加元素。以下是如何实现向 tensor 中添加元素的一种方法:

import torch

# 初始的 tensor
x = torch.tensor([0.6580, -1.0969, -0.4614])

# 要添加的元素
new_element = torch.tensor([1.0000, 2.0000, 3.0000])

# 创建一个新的 tensor,将原始 tensor 和新元素拼接在一起
result = torch.cat((x, new_element), dim=0)

print(result)

我们的输出结果是:

tensor([ 0.6580, -1.0969, -0.4614,  1.0000,  2.0000,  3.0000])

二、stack

我们上面的结果是:tensor([ 0.6580, -1.0969, -0.4614, 1.0000, 2.0000, 3.0000]),但是我如果想把结果转为下面的格式呢?

tensor([[ 0.6580, -1.0969, -0.4614],
        [ 1.0000,  2.0000,  3.0000]])

我该如何实现?可以使用stack函数。

import torch

x = torch.tensor([0.6580, -1.0969, -0.4614])
y = torch.tensor([1.0000, 2.0000, 3.0000])

# Concatenate x and y as rows (along dimension 0) to form a 2x3 tensor
result = torch.stack((x, y))

print(result)

我们的输出结果为:

tensor([[ 0.6580, -1.0969, -0.4614],
        [ 1.0000,  2.0000,  3.0000]])

但是如果我们继续添加,tensor的维度不同的时候,就会导致添加失败:

result = torch.stack((result, x))
result

代码就会报错:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
d:\CodeProject\37.帮助大家看代码\demo.ipynb 单元格 18 in 1
----> 1 result = torch.stack((result, x))
      2 result

RuntimeError: stack expects each tensor to be equal size, but got [2, 3] at entry 0 and [3] at entry 1

提示我们tensor的维度尺寸必须相同。

功能是不是有所限制?

三、cat如何进行逐行的合并?

如果你想逐个追加 tensor,可以使用 PyTorch 的 torch.cat 函数,在每次追加时创建一个新的 tensor。下面是一个示例,演示如何逐个追加 tensor:

import torch

# 创建一个空的 tensor
result = torch.tensor([])

# 逐个追加 tensor
x = torch.tensor([0.6580, -1.0969, -0.4614])
result = torch.cat((result, x.view(1, -1)), dim=0)

y = torch.tensor([1.0000, 2.0000, 3.0000])
result = torch.cat((result, y.view(1, -1)), dim=0)

# 打印结果
print(result)

在这个示例中,我们首先创建一个空的 tensor result,然后逐个追加 x 和 y。注意使用 view(1, -1) 来将每个 tensor 变形为一个行向量,以确保它们可以正确地连接在一起。最终,result 中包含了逐个追加的 tensor。

你可以继续使用类似的方法,逐个追加更多的 tensor。

上面的输出结果为:

tensor([[ 0.6580, -1.0969, -0.4614],
        [ 1.0000,  2.0000,  3.0000]])

我们测试一下是否可以逐个追加更多的tensor:

result = torch.cat((result, x.view(1, -1)), 0)
result

我们测试了四次,结果如下所示:

tensor([[ 0.6580, -1.0969, -0.4614],
        [ 1.0000,  2.0000,  3.0000],
        [ 0.6580, -1.0969, -0.4614],
        [ 0.6580, -1.0969, -0.4614],
        [ 0.6580, -1.0969, -0.4614],
        [ 0.6580, -1.0969, -0.4614]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【torch】如何把把几个 tensor 连接起来?(含源代码) 的相关文章

  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 使用 Pycharm 在 Windows 下启动应用程序时出现 UnicodeDecodeError

    问题是当我尝试启动应用程序 app py 时 我收到以下错误 UnicodeDecodeError utf 8 编解码器无法解码位置 5 中的字节 0xb3 起始字节无效 整个文件app py coding utf 8 from flask
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐