2016-04-25 12 views
7

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

私の質問は、テンソルフローのどの機能が、他のピクセルとは無関係に、各ピクセルにsoftmax操作を適用できるかということです。 tf.nn.softmax操作はそのような目的のためではないようです。

利用可能な操作がない場合は、自分で作成する必要があります。

ありがとうございます!

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

+0

2dマトリックスに再構成し、softmaxしてから元に戻すことができます。 – Aaron

+0

あなたのコメントを同時に更新してください。しかし、ありがとう! –

+0

ちょっと、これをやっと実装しましたか?私はここで立ち往生している。 –

答えて

3

あなたが推測したように、それを2dに再形成し、それを元に戻すことは正しいアプローチです。

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 
関連する問題