2

簡単に言えば、私がやりたいことは次のとおりです

A = np.ones((3,3)) #arbitrary matrix
B = np.ones((2,2)) #arbitrary matrix
A[1:,1:] = A[1:,1:] + B 

Tensorflow を除いて (行列が任意に複雑なテンソル式になる場合があります)。どちらABTensorflow 変数ではなく、ありふれたテンソルです。

これまでに収集したもの: テンソルは不変であるため、部分行列に割り当てることはできません。tf.scatter_ndサブ割り当ての現在のオプションですが、サブマトリックスをサポートしていないようで、スライスのみをサポートしています。

機能するはずですが、おそらく理想的ではないメソッド:

  • B をゼロでパディングすることもできますが、これは不必要に大きな B のインスタンス化につながると確信しています。スパースにすることはできますか?
  • A+U.dot(B).U.Tパディングのアイデアを使用することもできますが、たとえば Numpy で低ランクの分解として記述しUます。これが実際に有利かどうかはわかりません。
  • サブマトリックスに分割Aし、それらを積み重ねることができます。最も効率的かもしれませんが、コードが複雑になるようです。

理想的には、行列が徐々に小さくなるようにこの操作を N 回実行して、1 つの大きな最終結果を得たいと考えていますが、これは接線方向です。

今のところハックの 1 つを使用しますが、慣用的なバージョンが何であるかを誰かが教えてくれることを願っています!

4

0 に答える 0