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_firstchannels_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)