前提
Pythonで、入力(画像)と出力(文字列)のシーケンス長が異なるデータを扱うニューラルネットワークモデルを構築しようと考えています。Pytorchでの実装をしようとしているのですが、損失関数のCTC lossに関してご質問があります。なおTensorFlowでも同様の仕様でしたのでタグに加えさせて頂きました。
PytorchのCTC loss文書:
https://pytorch.org/docs/stable/generated/torch.nn.CTCLoss.html
TensorFlowのCTC loss文書:
https://www.tensorflow.org/api_docs/python/tf/nn/ctc_loss
発生している問題・エラーメッセージ
ドキュメントを参照したところ、CTC lossに適切な正解データサイズは[バッチ数,シーケンス長]の2次元とのことです。また予測値は最後にLogSoftmaxを通した値にする必要がする必要があるようです。Softmaxを使うということは、正解データはone_hotベクトルで表現し、[バッチ数,シーケンス長,クラス数(one_hot)]の3次元になると思います。今の私の認識ですと、正解データのサイズに関し矛盾が生じることになります。どこに誤りがあるのかご指摘頂けますと大変ありがたく存じます。
素人質問ではありますが、ご回答頂けますと幸いです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー