Source: vis/losses.py#L0
Loss
最小化される損失関数を定義するための抽象クラスです。
損失関数はbuild_loss
関数を定義して構築されるべきです。
name
属性は冗長な出力を伴う損失関数を識別するために定義されるべきです。
オーバーライドしない場合、デフォルトでは'Unnamed Loss'になります。
Loss.__init__
__init__(self)
自身を初期化します。正確なシグネチャについてはhelp(type(self))
で参照してください。
Loss.build_loss
build_loss(self)
損失関数式を構築するために、この関数を実装します。
この損失関数を構築するために必要な追加の引数は__init__
経由で渡すことができます。
理想的には、この関数式は全てのKerasバックエンドと、channels_first
やchannels_last
の画像データフォーマットと互換性を持つべきです。
utils.slicer
を使えば、データフォーマットを気にせずスライスを定義できます。
(channels_first
フォーマットで定義すると、channels_last
フォーマットを使うTensorflow用にインデックスを自動的にシャッフルします。 )
# theano slice
conv_layer[:, filter_idx, ...]
# TF slice
conv_layer[..., filter_idx]
# Backend agnostic slice
conv_layer[utils.slicer[:, filter_idx, ...]]
utils.get_img_shapeはこれを簡単にするもう一つのオプショナルユーティリティです。
戻り値:
損失式
ActivationMaximization
特定レイヤ内のフィルタセットの活性化を最大化する損失関数です。
この損失は通常とは反対の問い掛けのために使われますーどのような種類の入力画像でネットワークの確信度が増加するか、例えば犬クラスで。 これはネットワークに内在化しているものが'犬'の画像空間であると判断する助けになります。
これを最後のkeras.layers.Dense
レイヤで、'犬'と'人'の出力両方を最大化する入力画像の生成に使うこともできます。
ActivationMaximization.__init__
__init__(self, layer, filter_indices)
引数:
- layer: 最大化するフィルタのKerasレイヤ。これはconv層かdense層を指定できます。
- filter_indices: 最大化するフィルタのindices。
keras.layers.Dense
レイヤであれば、filter_idx
は出力インデックスとして解釈されます。
もし貴方がクラス出力を最大化するために最後のkeras.layers.Dense
レイヤを最適化する場合、'softmax'とは対照的な活性化である'linear'の方がより良い結果を得る傾向があります。これはsoftmax
出力が他のクラスを最小限にすることで最大化されることができるためです。
ActivationMaximization.build_loss
build_loss(self)