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
谢谢。我认为这是正确的,但您对我在问题中添加的其他注释有何看法?