2017-08-14 8 views
0

変数の変数の次元に基づいて質問を更新しました。PyTorchは変数を動的次元でサポートしていますか?

入力テンソルが次元10x3で3dポイントを格納すると仮定すると、10は#pointを意味し、3はフィーチャ次元(x、y、z座標など)を意味します。変数の次元は、入力テンソルに依存します。たとえば、次元は10x10です。入力テンソルがその次元を50x3に変更すると、変数の次元も50x50に変更する必要があります。

Tensorflowでは入力ディメンションが変更されているか不明な場合は、tf.placeholder(None、3)として宣言できます。しかし、私は変数のサイズが変わっている/未知の状況には決して遭遇しません。変数は常に固定の次元を持つようです。

私は現在PyTorchを学んでおり、PyTorchがこの機能をサポートしているかどうかはわかりません。どんな情報もありがとう!

=========オリジナルの質問が========

Iは、入力寸法が変化したときにサイズが変更可能な変数を持っています。たとえば、入力が10x2の場合、変数は10x10でなければなりません。入力が25x2の場合、変数は25x25でなければなりません。私の理解では、変数は通常は次元が固定された重みを格納するために使用されます。しかし、私の場合、変数の次元は入力データに依存しますが、これは変更可能です。 PyTorchは現在、この種の機能をサポートしていますか?

ありがとうございます!

+0

入力変数のコンテキストを増やすことで、質問のあいまいさを絞り込むことができます。 –

答えて

1

あなたの質問はあいまいです。入力が10x2と言うときは、入力テンソルに含まれるものを定義する必要があります。

私はあなたが話していると仮定していますtorch.autograd.Variable。 PyTorchの機能を使いたい場合、目的関数の目的の形のテンソルを使って入力を行う必要があります。

たとえば、PyTorchで実装されたRNNを、各単語が300次元のベクトル(単語の埋め込みなど)で表される長さ10の入力文に使用する場合は、次のようにします。

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) 

1つ以上の文がある場合は、それらを一括して入力できます。その場合、可変長を処理するためにそれらをパディングする必要があります。あなたが見ることができるように、RNNは文の長さを気にせず、可変長を扱うことができますが、多くの文をバッチで提供するには、パディングが必要です。関連する機能は、official documentationで調べることができます。


あなたの入力が実際に何であるかは言及しなかったので、私はそのような場合にはPyTorchがあなたの目的を果たすことができ、あなたはタイムステップの可変数を持つ変数を必要とすると仮定しています。実際、PyTorchは、ディープニューラルネットワークアーキテクチャを構築するために必要なすべての基本機能を満たすように開発されています。

+0

こんにちはWasi、コメントありがとう!実際、入力テンソルはタイムステップの代わりに3dポイントです。私は私の質問を更新して、質問の詳細を確認してください。ありがとう! –

関連する問題