2017-10-02 18 views
0

が、私はこの二つのテンソルがあると仮定しなさい:Kerasテンソル - 他のテンソルから来るのインデックスを持つ値が

  • valueMatrix?(?, 1)
ような形状バッチサイズ
  • indexMatrix、ある(?, 3)、のような形状

    valueMatrixの値をindexMatrixに含まれるインデックスで検索したいとします。

    例(擬似コード):私は他のバックエンド上Tensorflowを好むが、答えはと互換性がなければならない

    valueMatrix[indexMatrix] --> returns --> [[15],[4]] 
    

    valueMatrix = [[7,15,5],[4,6,8]] -- shape=(2,3) -- type=float 
    indexMatrix = [[1],[0]] -- shape = (2,1) -- type=int 
    

    私はのような何かをするために、この例からしたいですラムダ層またはタスクのための他の適切な層を使用するケラス(Keras)モデル。

  • 答えて

    1
    import tensorflow as tf 
    valueMatrix = tf.constant([[7,15,5],[4,6,8]]) 
    indexMatrix = tf.constant([[1],[0]]) 
    
    # create the row index with tf.range 
    row_idx = tf.reshape(tf.range(indexMatrix.shape[0]), (-1,1)) 
    # stack with column index 
    idx = tf.stack([row_idx, indexMatrix], axis=-1) 
    # extract the elements with gather_nd 
    values = tf.gather_nd(valueMatrix, idx) 
    
    with tf.Session() as sess: 
        print(sess.run(values)) 
    #[[15] 
    # [ 4]] 
    
    +0

    素晴らしい!ありがとうございます - 私は 'tf.gather_nd'のためのケラスの置き換えを見つけることができませんでしたが、とにかくラムダの層の中で動作します。 –

    関連する問題