Numpy 从批处理版本重建torch张量

Numpy 从批处理版本重建torch张量,numpy,machine-learning,pytorch,feature-extraction,torch,Numpy,Machine Learning,Pytorch,Feature Extraction,Torch,这是如何构建三维张量的一个很好的示例: import torch y = torch.rand(100, 1) batch_size = 10 batched_data = y.contiguous().view(batch_size, -1, y.size(-1)).transpose(0,1) batched_data.shape 输出为: torch.Size([10, 10, 1]) tensor([[[ 0], [10], [20],

这是如何构建三维张量的一个很好的示例:

import torch
y = torch.rand(100, 1)
batch_size = 10
batched_data = y.contiguous().view(batch_size, -1, y.size(-1)).transpose(0,1)
batched_data.shape
输出为:

torch.Size([10, 10, 1])
tensor([[[ 0],
         [10],
         [20],
         [30],
         [40],
         [50],
         [60],
         [70],
         [80],
         [90]],

        [[ 1],
         [11],
         [21],
         [31],
         [41],
         [51],
         [61],
         [71],
         [81],
         [91]],
好,现在我想做的是,从批处理的_数据开始,我想构建y。 反过来说。 对于强大的pytorch流线型代码有什么好的建议吗

==附加输入=====

我正在使用RNN,现在我有一些疑虑,因为如果你考虑下面的代码:

import torch
y = torch.arange(100).view(100,1)
batch_size = 10
batched_data = y.contiguous().view(batch_size, -1, y.size(-1)).transpose(0,1)
batched_data.shape
输出为:

torch.Size([10, 10, 1])
tensor([[[ 0],
         [10],
         [20],
         [30],
         [40],
         [50],
         [60],
         [70],
         [80],
         [90]],

        [[ 1],
         [11],
         [21],
         [31],
         [41],
         [51],
         [61],
         [71],
         [81],
         [91]],
我没料到。我希望有这样的情况:
[[1,2,3,4,5,6,7,8,9,10],[11,12,13,14,15,16,17,18,19,20],…

假设您要执行类似操作来重建y:

rebuilded_y = batched_data.transpose(0,1).view(*y.shape)
要使输入看起来像您期望的那样,您需要在批处理的_数据中删除转置和附加维度:

batched_data = y.contiguous().view(batch_size, -1)

如果你想为RNN准备输入,你需要知道它采用形状的3d张量,
seq_len,batch,input_size
。这里,
input_size
指的是功能的数量,在你的场景中,它是1。因此,形状
10,10,1
的输入张量仍然可以是RNN的有效输入

示例

rnn = nn.RNN(input_size=1, hidden_size=20, num_layers=1)
input = torch.randn(10, 10, 1)
output, hn = rnn(input)
print(output.size()) # 10, 10, 20

RNN的输出是有形状的,
seq\u len,batch,num\u directions*hidden\u size

谢谢。我认为这是正确的,但您对我在问题中添加的其他注释有何看法?