Python pytorch:如何在没有任何条目的情况下正确初始化张量?
我现在正在做的是:Python pytorch:如何在没有任何条目的情况下正确初始化张量?,python,initialization,append,pytorch,empty-list,Python,Initialization,Append,Pytorch,Empty List,我现在正在做的是: In [1]: torch.Tensor([[[] for _ in range(3)] for _ in range(5)]) Out[1]: tensor([], size=(5, 3, 0)) 这对我来说很好,但是否有一个火炬的功能,可以做到这一点,我错过了 提前谢谢 编辑: 我的用例是: 我用它来聚合所有维度都相同并且没有空维度的张量。我正在使用torch.cat: # results start with shape (a
In [1]: torch.Tensor([[[] for _ in range(3)] for _ in range(5)])
Out[1]: tensor([], size=(5, 3, 0))
这对我来说很好,但是否有一个火炬的功能,可以做到这一点,我错过了
提前谢谢
编辑:
我的用例是:
我用它来聚合所有维度都相同并且没有空维度的张量。我正在使用torch.cat:
# results start with shape (a,b,0)
results = torch.Tensor([[[] for _ in range(b)] for _ in range(a)])
for t in range(time):
# r has shape (a,b)
r = model(...)
# results now has shape (a,b,t)
results = torch.cat([results,r.unsqueeze(2)],dim=-1)
简单地附加到列表对我来说是不切实际的,因为我必须对每个步骤的结果执行整形操作(我正在进行波束搜索)
一种解决方案是在我得到第一个返回的张量之前不初始化结果,但这感觉不和谐/错误。这可能是另一种方式,具体取决于您的用例
alpha = torch.tensor([])
In[5]: alpha[:,None,None,None]
Out[5]: tensor([], size=(0, 1, 1, 1))
其他途径:
torch.tensor([[[[]]]]) #tensor([], size=(1, 1, 1, 0))
torch.tensor([[[[],[]]]]) #tensor([], size=(1, 1, 2, 0))
您具有以下功能:
torch.empty(5,3,0)
>>> tensor([], size=(5, 3, 0))
是一个没有任何条目的张量。empty()不会创建空张量。看看这个:你完全正确,我道歉。我误解了OP想要什么<代码>火炬。空(0,1,1,1)
仍然产生与代码I相同的结果think@Mughees这些方法实际上都没有初始化张量。将维度0与空
、零
、一等一起使用将产生与您的答案相同的结果。检查.tolist()
结果。没有一个能真正设置张量的元素。@Berriel,我的意思是,在这一点上,实际的问题是“一个张量在没有任何输入的情况下被初始化意味着什么?”Mughees和我的回答只是为了创建一个与OP的张量具有相同奇怪维度的张量,我想这对你有什么作用?你以后怎么处理这个张量?因为这个张量实际上并不像它那样有用。@Berriel请看编辑不幸的是,这对我不起作用,因为我需要一些大于1的非零DIM