9

最後の畳み込み層がフィルター サイズ 1x1 を使用し、「スコア」テンソルを出力する、完全な畳み込みネットワークのようなものを実装しようとしています。スコア テンソルの形状は [バッチ、高さ、幅、num_classes] です。

私の質問は、テンソルフローのどの関数が、他のピクセルとは関係なく、各ピクセルにソフトマックス操作を適用できるかということです。tf.nn.softmax ops は、そのような目的ではないようです。

そのような ops が利用できない場合は、自分で作成する必要があると思います。

ありがとう!

更新: 自分で実装する必要がある場合は、入力テンソルを [N, num_claees] (N = バッチ x 幅 x 高さ) に再形成し、tf.nn.softmax を適用してから再形成する必要があると思います。それは理にかなっていますか?

4

2 に答える 2

4

ご想像のとおり、2次元に再形成してから再形成するのが正しいアプローチです。

于 2016-04-25T20:45:11.147 に答える
1

この機能を使用できます。

GitHubから検索して見つけました。

import tensorflow as tf

"""
Multi dimensional softmax,
refer to https://github.com/tensorflow/tensorflow/issues/210
compute softmax along the dimension of target
the native softmax only supports batch_size x dimension
"""
def softmax(target, axis, name=None):
    with tf.name_scope(name, 'softmax', values=[target]):
        max_axis = tf.reduce_max(target, axis, keep_dims=True)
        target_exp = tf.exp(target-max_axis)
        normalize = tf.reduce_sum(target_exp, axis, keep_dims=True)
        softmax = target_exp / normalize
        return softmax
于 2016-12-22T11:53:55.177 に答える