私は特定の軸の上に繰り返す必要があるので、私はできるだけ多くの不必要なメモリの再割り当てを避けたいです。「broadcast_to」方法をnumpyのためにtheano操作と同等はありますか?
たとえば、形状が(3、4、5)のnumpy配列A
がある場合、元のA
に形状(3、4、100、5)のB
という名前のビューを作成したいとします。 A
の第3軸は100回繰り返されます。
numpyのでは、これは次のように達成することができます。後者はちょうどビューを作成しながら、前者は、いくつかのコピーものを行う、新しいメモリを割り当て、
B=numpy.broadcast_to(A.reshape((3, 4, 1, 5)), repeats=100, axis=2)
:
B=numpy.repeat(A.reshape((3, 4, 1, 5)), repeats=100, axis=2)
か余分なメモリの再割り当てなしでA
以上。これが答えに記載の方法により識別することができます。
はtheanoでは、しかし、theano.tensor.repeat
はもちろん、それは好ましくないですが、唯一の方法であると思われます。
theanoメソッドが効率的にこれを行うことができるような `numpy.broadcast_to 'があるのだろうか?
まず第一に、あなたの答えをありがとうございました。しかし、このようにして、Ctは新たに作成されたゼロ4dテンソルのために余分なメモリストレージを必要とし、そのメモリ効率はtheano.repeatオペレーションと同じように見えます。 – Tqri