Python 将张量附加到另一张量的每个元素上

Python 将张量附加到另一张量的每个元素上,python,pytorch,Python,Pytorch,我有一个pytorch张量:x=torch.zero(2,2),还有另一个变量值张量:item=torch.tensor([[1,2],[3,4]]),我只是举个例子 我想添加项张量作为x张量的每个元素,这样 x = [[item, item], [item, item]] 所以x是一个张量,里面有张量。 我曾尝试将项直接分配给x,但出现了一个错误:运行时错误:张量的扩展大小必须与非单体维度的现有大小匹配没有看到任何pytorch本机函数,但您可以使用np.block: impor

我有一个pytorch张量:
x=torch.zero(2,2)
,还有另一个变量值张量:
item=torch.tensor([[1,2],[3,4]])
,我只是举个例子

我想添加
张量作为x张量的每个元素,这样

x = [[item, item], 
     [item, item]]
所以x是一个张量,里面有张量。
我曾尝试将
项直接分配给x,但出现了一个错误:
运行时错误:张量的扩展大小必须与非单体维度的现有大小匹配

没有看到任何
pytorch
本机函数,但您可以使用
np.block

import numpy as np
item = np.array(item) # need to convert item from tensor to ndarray
x = np.block([[item, item], [item, item]]
x = torch.from_numpy(x) # if you want to change it back to tensor

可能不是最快的,如果它真的很大,你在类型之间转换很多。注意:这样就不需要用零来初始化
x

没有看到任何
pytorch
本机函数,但您可以使用
np.block

import numpy as np
item = np.array(item) # need to convert item from tensor to ndarray
x = np.block([[item, item], [item, item]]
x = torch.from_numpy(x) # if you want to change it back to tensor
可能不是最快的,如果它真的很大,你在类型之间转换很多。注意,这样就不需要用零来初始化
x

使用, 你的
target\u tensor
形状将是
torch.Size([2,2,2,2])

item
tensor形状已经是
torch.Size([2,2])

使用:

repeat()函数的前两个参数是x的形状, 你的
target\u tensor
形状将是
torch.Size([2,2,2,2])

item
tensor形状已经是
torch.Size([2,2])

使用:


repeat()函数的前两个参数是x的形状

只有变量支持切片赋值。源和目标之间的形状必须相同

 a=tf.Variable([[1,2],[3,4]])
 a.assign([[5,6], [7,8]])

 print(a.numpy())
输出: [[5,6] [7 8]]

如果数据是非常规分配,请尝试使用RaggedSensor

输出

<tf.RaggedTensor [[1, 2], [3, 4, 5]]>

只有变量支持切片赋值。源和目标之间的形状必须相同

 a=tf.Variable([[1,2],[3,4]])
 a.assign([[5,6], [7,8]])

 print(a.numpy())
输出: [[5,6] [7 8]]

如果数据是非常规分配,请尝试使用RaggedSensor

输出

<tf.RaggedTensor [[1, 2], [3, 4, 5]]>