PyTorch是否支持具有动态维度的变量?

时间:2017-08-14 00:37:02

标签: deep-learning pytorch dynamic-variables

我已根据变量的变量维度更新了我的问题。

假设输入张量存储尺寸为10x3的3d点,10表示#points,3表示要素尺寸(比如x,y,z坐标)。变量的大小取决于输入张量,比如它的尺寸是10x10。当输入张量将其尺寸更改为50x3时,变量的尺寸也必须更改为50x50。

我知道在Tensorflow中,如果输入维度正在改变/未知,我们可以将其声明为tf.placeholder(None,3)。但是,我从来没有遇到变量大小正在变化/未知的情况,似乎变量总是具有固定的维度。

我目前正在学习PyTorch,并且不知道PyTorch是否支持此功能。任何信息将不胜感激!

=========原始问题========

我有一个变量,当输入尺寸改变时,尺寸可以改变。例如,如果输入为10x2,则变量应为10x10。如果输入为25x2,则变量应为25x25。据我所知,该变量用于存储权重,通常具有固定的维度。但是在我的例子中,变量的维度取决于输入数据,输入数据可以改变。 PyTorch目前是否支持这种功能?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题有点含糊不清。当你说,输入是torch.autograd.Variable时,你需要定义输入张量包含的内容。

我假设你在谈论rnn = nn.RNN(300, 256, 2) # emb_size=300,hidden_size=256,num_layers=2 input = Variable(torch.randn(10, 1, 300)) # sent_length=10,batch_size=1,emb_size=300 h0 = Variable(torch.randn(2, 1, 256)) # num_layers=2,batch_size=1,hidden_size=256 output, hn = rnn(input, h0) 。如果您想使用PyTorch的功能,您需要做的是通过目标函数所需形状的张量提供输入。

例如,如果您想在PyTorch中使用RNN来获得长度为10的输入句子,其中每个单词由300维向量(例如,单词嵌入)表示,那么您可以执行以下操作。

{{1}}

如果您有超过1个句子,那么您可以批量提供它们。在这种情况下,您需要填充它们以处理可变长度。正如您所看到的,RNN并不关心句子长度,它可以处理可变长度但是要批量提供多个句子,您需要填充。您可以在official documentation中探索相关的功能。

由于你没有提到你的输入实际是什么,我假设你需要具有可变时间步数的变量,在这种情况下PyTorch可以满足你的目的。实际上,PyTorch的开发是为了满足构建深度神经网络架构所需的所有基本功能。