タイトルを間違えたら申し訳ありませんが、これの言い方がわかりませんでした。とにかく、私は一連の値のテンソルを持っていますが、テンソル内のすべての要素が0〜255の範囲にあることを確認したいと思います(または0-1も機能します)。ただし、softmaxのようにすべての値の合計を1または255にしたくないので、値を小さくします。
これを行う方法はありますか?
ありがとう!
データを正規化しようとしています。古典的な正規化式は次のとおりです。
normalize_value = (value − min_value) / (max_value − min_value)
Tensorflowの実装は次のようになります。
tensor = tf.div(
tf.subtract(
tensor,
tf.reduce_min(tensor)
),
tf.subtract(
tf.reduce_max(tensor),
tf.reduce_min(tensor)
)
)
テンソルのすべての値は0と1の間になります。
[〜#〜]重要[〜#〜]:テンソルにfloat/double値があることを確認してください。そうでない場合、出力テンソルには0と1しかありません。整数テンソルがある場合は、最初にこれを呼び出します。
tensor = tf.to_float(tensor)
sigmoid(tensor) * 255
が実行する必要があります。
Wikipediaの feature scaling によると、単位長へのスケーリングを試すこともできます。
これは、次のコードセグメントを使用して実装できます。
In [3]: a = tf.constant([2.0, 4.0, 6.0, 1.0, 0])
In [4]: b = a / tf.norm(a)
In [5]: b.eval()
Out[5]: array([ 0.26490647, 0.52981293, 0.79471946, 0.13245323, 0. ], dtype=float32)