Keras で自前の評価関数を作成する

Keras の出力で異なる活性化関数を使いそれぞれの損失関数を指定する - プログラマのメモ書き で、評価関数 を作成してみました。この評価関数で、bbox の評価値として Intersection over Union (IOU) を計算します。

続きを読む

Keras の出力で異なる活性化関数を使いそれぞれの損失関数を指定する

画像を認識する機械学習のプログラムを勉強しています。Keras を使って、次のことが学習できるかためしてみました。

  • 画像中に物体が存在するかどうか。
  • 物体が存在するならば、その物体を囲む長方形の位置。

このモデルで、出力に異なる 2 種類の 活性化関数 を使い、それぞれに 損失関数 を指定してみました。

続きを読む

Linqの遅延評価と処理内容

LinqIEnumerableの内容は遅延評価される。その内容を生成する処理は、

  • その処理が呼び出されたときではなく、
  • その内容が使われるときに実行される。

そのため処理の内容によっては、思わぬ結果になることがある。

続きを読む

SelectとSelectManyの違い

LinqSelectSelectManyの違いについて。

public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, TResult> selector)
//                -------
public static IEnumerable<TResult> SelectMany<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, IEnumerable<TResult>> selector)
//                --------------------

これらの違いは、引数に指定する関数selectorの戻り値の型が、TResultかIEnumerable<TResult>かだけである。

続きを読む

1 つのメソッドは 1 つのことに専念する

メソッドはできるだけ単純にしよう。読んで解読する人のことを考えよう。

ここでは例として、指定の文字列中の指定の単語を "<B>" と "</B>" で囲んで強調表示に設定する場合を考える。この動作を分解すると、

  • 指定の文字列から単語を抽出する。
  • 抽出した単語が指定のものならば強調表示する。

という 2 つの内容に分けられる。これを 1 つのメソッドで実現してみると、

続きを読む