-1

そこで、Keras を使用して畳み込みニューラル ネットワークを実装しています。デコード トポロジの最後には、シグモイド アクティベーションを備えた Conv2D レイヤーがあります。

decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

基本的に、シグモイドの実装を変更したいのですが、私の目標は、シグモイド関数が 0.5 未満の値を取得する場合は 0 を返し、0.5 以上の値を取得する場合は 1 を返すバイナリ型のアクティベーションにすることです。

Tensorflow 実装内を検索すると、シグモイドが次のようなものであることがわかりました。

def sigmoid(x, name=None):
    with ops.name_scope(name, "Sigmoid", [x]) as name:
        x = ops.convert_to_tensor(x, name="x")
        return gen_math_ops._sigmoid(x, name=name)

gen_math_ops の戻り値を操作して、その値を 0.5 のしきい値と比較するのに問題があります。tensor 型の制限のために if が使用できないことはよくあることですが、これをどのように解決すればよいでしょうか?

4

1 に答える 1