の1次元配列を指定して3次元アレイからの2Dアレイの作成、X、インデックスのセット[I、J]I 、J < N、I形状の配列を取得しようとしている(2、m)の最初の配列がインデックスである [0、i]はと二番目の配列は、インデックス[1、j]はであります。これは、形状の配列(b、n、m)と長さbの一連のインデックスに一般化するためのテストケースです。ベクトル化形状<em>(2、n、m)は</em>の配列を指定指数
明らかにこの操作の選択肢はnp.chooseですが、これは予想外の動作です。最初の配列の行iと、2番目の配列の行jをペアにしたいとします。しかし、np.chooseを使用する場合([I、J]を、X)、インデックスとアレイから np.choose対最初カラムアレイから2列目とを有するIj(以下のコードで見ることができます)形状の配列を取得する(n、m)。明らかにこのタスクはforループを使って簡単に実行できますが、ユースケース(反復が禁止されているテンソルのカスタム関数としてKeras内にあるため)ではできません。 Kerasのバックエンド関数またはNumpyを使用して、この操作をベクトル化した方法がありますか?私は現在、これを行うために "マップ"を使用して見て、私はそれを把握する場合は自分の答えで更新されます。
>>> import numpy as np
>>> x = np.random.rand(2,4,2)
>>> choices = [3,1]
>>> np.choose(choices,x)
ValueError: invalid entry in choice array
>>> np.choose([0,0],x)
#Returns an array with x[0,:,0] and x[0,:,1] in shape(4,2)
ループコードはありますか? – Divakar
@Divakarはい、それは実行している全体的な作業です(「n」個の個別softmax出力を含むバッチ「b」の最大確率出力を見つけること)。これは、その関数のベクトル化の最後のステップです。全体的な機能のコードも提供する必要がありますか?現時点では無関係だと思われますが、ここで何が起こっているのか、もう少し具体的な文脈を提供すると思います。 – AGentleRose