前提・実現したいこと
私は現在GANの実装をしているのですが、Discriminatorに対して与える真偽値の教師データの与え方について悩んでいます。
GANについてGithubなどでいくつかの実装を参考にしたところ、Discriminatorの出力において以下のように**”Softmax”を用いたものと”Sigmoid”**を用いたものの二種類が見受けられました。
- Dense(units=2, activation='softmax')(x) - Dense(units=1, activation='sigmoid')(x)
**"Softmax"**出力においては
”偽”→[1,0]、”真”→[0,1]
というようにOne-hotベクトルで解を与えており、
**”sigmoid”**出力においては、
”偽”→[0]、”真”→[1]
というように1次元のベクトルで解を与えており、形が違っても結果が同様のものとなることはわかります。
この2つだと、”sigmoid”を用いる方が直感的にわかりやすく、またパラメータも少なくなるので良いように私には思えます。
しかし(私の体感ですが)多くの人は、”Softmax”を用い真偽の二次元ベクトルを出力するようにネットワークを構成しているように感じました。
これは単純な好みの問題でしょうか?
それともGANの種類によって適切な選択があるのでしょうか?
些末なことで申し訳ありませんが、よろしくお願い致します。
補足情報
keras(tensorflow)を用いてPix2Pix(CoditionalGANの一種)の実装をしています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/28 11:35
2018/11/28 15:15