クラス確率ベクトルとターゲットクラスを表す指標の列を比較して,コネクショニスト時系列分類法(CTC)の損失を計算する,ネット層を表す.
CTCLossLayer
クラス確率ベクトルとターゲットクラスを表す指標の列を比較して,コネクショニスト時系列分類法(CTC)の損失を計算する,ネット層を表す.
詳細とオプション
- CTCLossLayer[]はベクトル列を表す入力行列と整数列を表すターゲットベクトルを取り,実数値を出力するネットを表す.
- CTCLossLayerはNetGraphの中で使われることが多い.
- CTCLossLayerは,NetGraph等で使うために次のポートを開放する.
-
"Input" サイズ c+1の確率ベクトルの列 "Target" 1から cまでの整数の列 "Output" 実数 - 層の定義は,Graves et al.による2006年の「Connectionist Temporal Classification: Labelling Unsegmented Sequence Data with Recurrent Neural Networks」に基づいている.
- 入力は,各ベクトルの和が1になる,サイズ c+1の確率ベクトルの列でなければならない.各ベクトルの最終要素は特殊なblankクラスの確率を表す.残りの要素は指標が付けられた1から c までのクラスの確率を表す.ターゲットは1から c までの整数の列である.ターゲットの列は入力列より長くてはならない.
- CTCLossLayer[…][<|"Input"in,"Target"target|>]は,層を適用して明示的に出力を計算する.
- CTCLossLayer[…][<|"Input"->{in1,in2,…},"Target"->{target1,target2,…}|>]は,iniと targetiのそれぞれについて出力を明示的に計算する.
- NumericArrayが入力として与えられると,出力はNumericArrayになる.
- 入力サイズは,一般に,NetGraph内で自動的に推測される.
- CTCLossLayer[n,"Input"ishape,"Target"tshape]で入力とターゲットの形状が指定できる.以下は,ishape が取り得る形である.
-
NetEncoder[…] ベクトル列を生成するエンコーダ {len,c+1} len 個の長さ(c+1)のベクトルの列 {len,Automatic} 長さが推測される len 個のベクトルの列 {"Varying",c+1} それぞれの長さが c+1の,数量不定のベクトル {"Varying",Automatic} それぞれの長さが推測される,数量不定のベクトル - 次は,tshape の可能な形である.
-
NetEncoder[…] 整数列を生成するエンコーダ {len2} len2個の整数の列 {"Varying"} 数量不定の整数 RepeatingElement[Restricted[Integer,c]] 範囲が1から c までの,数量不定の整数 - Options[CTCLossLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[CTCLossLayer[…]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
- Information[CTCLossLayer[…]]は層についてのレポートを与える.
- Information[CTCLossLayer[…],prop]はCTCLossLayer[…]の特性 prop の値を与える.使用可能な特性はNetGraphと同じである.
例題
すべて開く すべて閉じる例 (2)
CTCLossLayerオブジェクトを作る:
CTCLossLayer[]行が確率ベクトルである行列が入力で指標のベクトルがターゲットであるCTCLossLayerを作る:
loss = CTCLossLayer[]loss[<|"Input" -> {{0.1, 0.2, 0.7}, {0.4, 0.2, 0.4}, {0.3, 0.5, 0.2}}, "Target" -> {1, 2}|>]アプリケーション (1)
画像中の文字のベクトルを分類するネットを訓練する.まず,単語および対応する単語列からなる訓練データと検証データを生成する:
imgMap = <|" " -> [image], "a" -> [image], "b" -> [image], "c" -> [image], "d" -> [image], "e" -> [image], "f" -> [image], "g" -> [image], "h" -> [image], "i" -> [image], "j" -> [image], "k" -> [image], "l" -> [image], "m" -> [image], "n" -> [image], "o" -> [image], "p" -> [image], "q" -> [image], "r" -> [image], "s" -> [image], "t" -> [image], "u" -> [image], "v" -> [image], "w" -> [image], "x" -> [image], "y" -> [image], "z" -> [image]|>;maxLen = 7;
wordList = ToLowerCase[Select[WordList[], StringLength[#] ≤ maxLen && LetterQ[#]&]];
SeedRandom[1234];
wordList = RandomSample[StringPadRight[wordList, maxLen]];
dataset = Dataset@Map[<|"Input" -> ImageAssemble[Lookup[imgMap, Characters[#]]], "Output" -> StringTrim[#]|>&, wordList];{testData, trainData} = TakeDrop[dataset, Ceiling[Length[dataset] / 10]];訓練集合のRandomSampleを取る:
RandomSample[trainData, 4]chars = CharacterRange["a", "z"]このデコーダは,ビームサイズ50のビーム探索デコーダである:
decoder = NetDecoder[{"CTCBeamSearch", chars, "BeamSize" -> 50}]画像を取って幅の次元を列の次元として扱うネットを定義する.行が次元についての確率ベクトルである行列が生成される:
ocrNet = NetChain[{ConvolutionLayer[20, 3], BatchNormalizationLayer[], Ramp, PoolingLayer[2], ConvolutionLayer[15, 3], BatchNormalizationLayer[], Ramp, PoolingLayer[2], FlattenLayer[1], TransposeLayer[], GatedRecurrentLayer[19], GatedRecurrentLayer[19], NetMapOperator[LinearLayer[Length[chars] + 1]], SoftmaxLayer[]}, "Input" -> NetEncoder[{"Image", {63, 15}, "Grayscale"}], "Output" -> decoder]ターゲットポートに付けられた文字のNetEncoderでCTCLossLayerを定義する:
loss = CTCLossLayer["Target" -> NetEncoder[{"Characters", chars}]]trainNet = NetTrain[ocrNet, trainData, LossFunction -> loss, MaxTrainingRounds -> 20, ValidationSet -> testData]testIms = Normal@testData[1 ;; 3, "Input"]trainNet[testIms]画像について,トップ5の復号化を各復号化の負の対数尤度とともに求める:
trainNet[[image], {"TopNegativeLogLikelihoods", 5}]テクニカルノート
関連するガイド
テキスト
Wolfram Research (2018), CTCLossLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/CTCLossLayer.html.
CMS
Wolfram Language. 2018. "CTCLossLayer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/CTCLossLayer.html.
APA
Wolfram Language. (2018). CTCLossLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/CTCLossLayer.html
BibTeX
@misc{reference.wolfram_2026_ctclosslayer, author="Wolfram Research", title="{CTCLossLayer}", year="2018", howpublished="\url{https://reference.wolfram.com/language/ref/CTCLossLayer.html}", note=[Accessed: 05-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_ctclosslayer, organization={Wolfram Research}, title={CTCLossLayer}, year={2018}, url={https://reference.wolfram.com/language/ref/CTCLossLayer.html}, note=[Accessed: 05-September-2026]}