37742
tf.gatherとtf.expand_dimsはどういう意味でしょうか？  
公式サイトを見ましたがよくわかりませんでした。

```

    top_k_xvals, top_k_indices = tf.nn.top_k(tf.negative(distance), k=k)
    
    x_sums = tf.expand_dims(tf.reduce_sum(top_k_xvals, 1),1)
    x_sums_repeated = tf.matmul(x_sums, tf.ones([1, k], tf.float32))
    x_val_weights = tf.expand_dims(tf.div(top_k_xvals,x_sums_repeated), 1)
    
    top_k_yvals = tf.gather(y_target_train, top_k_indices)
    prediction = tf.squeeze(tf.matmul(x_val_weights, top_k_yvals), axis=[1])
    
```

参照：TensorFlow機械学習クックブック
CC BY-SA 3.0
2017-08-25T05:58:22.833
37482
2017-09-05T23:50:01.150
23690
question
python tensorflow
tf.gatherとtf.expand_dimsはどういう意味でしょうか？
tf.expand_dims(input, axis) は input テンソルの axis に指定した階に 1 次元挿入する．

e.g. shape が (2,3,4) の input の axis=2 に 1 次元を挿入すると (2,3,1,4) になる．

PyTorch でいう unsqueeze と同じ．

~~

tf.gather(params, indices, axis) は params テンソルの axis に指定した階でスライスして，indeices
で指定したインデックスのテンソルだけ取り出してくっつける．

e.g. [[1,2,3],[4,5,6]] という params テンソルの axis=1 でスライスすると [1,4] と [2,5] と [3,6]
という 3 つのテンソルができ，indeces=[1,2] なら 1,2 番目のテンソルを取り出してくっつけるので [[2,3],[5,6]] になる．
CC BY-SA 3.0
2017-09-05T23:50:01.150
37742
2017-09-05T23:50:01.150
25227
37482
answer