chainer.functions.connectionist_temporal_classification(x, t, blank_symbol, input_length=None, label_length=None, reduce='mean')[source]

Connectionist Temporal Classification(CTC) 損失関数

 

Connectionist Temporal Classification(CTC) [Graves2006] は入力とターゲット間のアライメントがわからないシーケンスラベリングの損失関数です。 [Graves2012]こちらもお読みください。

出力はreduceオプションの値に依る変数。 'no'が設定されている場合、 サンプルごとのロス値を持つ。 'mean'が設定されている場合、ロス値の平均をとる。

 

Parameters:
  • x (sequence of Variable) – 各時間におけるRNN 出力  x は  Variable のリストでなければならない。 各 x, x[i] の要素は i時のRNNの出力を表すVariable
  • t (Variable) – 予測ラベルシーケンス。
  • blank_symbol (int) – blank_symbolのインデクス。この値は非負でなければならない。
  • input_length (Variable) – 各ミニバッチ x の有効なシーケンスの長さ(オプション)。 input_length がスキップされた場合、全ての x を有効入力とみなす。
  • label_length (Variable) –  各ミニバッチ x の有効なシーケンスの長さ(オプション。ラベルがスキップされた場合、全てのt が 有効な入力であるとみなす。
  • reduce (str) – 削減オプション。 'mean''no'.を取らなければならない。それ以外では , ValueError がおきる、
Returns:

 CTC 損失のスカラ値を保持しているVariable。 reduce'no' が設定されている場合、出力値は shape が (B,) 、ただし B がサンプル数であるような配列を保持する。 'mean' が設定されている場合 はスカラを保持する。

Return type:

Variable

Note

  x を活性化関数(例.ソフトマックス関数)を適用することなく、入力する必要があります。この関数は数量的限界を避けるためにCTC損失を計算する前に x にソフトマックス関数を適用するためです。また、forwarded values をデコードする前に、ソフトマックス関数を適用する必要があります。

Note

この関数は xによってのみ、微分可能です。

Note

この関数は (バッチ(batch), シーケンス(sequence), 1次元の入力(1-dimensional input))-データをサポートしています。

 

[Graves2006] Alex Graves, Santiago Fernandez, Faustino Gomez, Jurgen Schmidhuber, Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks

 

[Graves2012] Alex Graves, Supervised Sequence Labelling with Recurrent Neural Networks