問題タブ [ctc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1095 参照

tensorflow - 可変長の特徴とラベルで TF CTC 損失を使用する方法

Tensorflow を使用して、CTC 損失のある音声認識エンジンを実装したいと考えています。各音声発話の長さは可変であるため、入力特徴の長さは可変です。各転写が異なるため、ラベルの長さも可変です。フィーチャを手動でパディングしてバッチを作成し、モデルには tf.keras.layers.Masking() レイヤーを作成して、ネットワークを介してマスクを伝播します。また、パディングを使用してラベル バッチを作成します。

これはダミーの例です。それぞれ長さが 3 フレームと 5 フレームの 2 つの発話があるとします。各フレームは 1 つの機能で表されます (通常、これは 13 の MFCC になりますが、単純にするために 1 つに減らします)。バッチを作成するために、短い発話の最後に 0 を追加します。

ラベルは、これらの発話を書き起こしたものです。長さがそれぞれ 2 と 3 であるとしましょう。ラベルのバッチ形状は [2, 3, 26] になります。ここで、バッチ サイズは 2、最大長は 3、英語の文字数は 26 (ワンホット エンコーディング) です。

モデルは次のとおりです。

損失関数は次のようなものです。

私の質問は、logit_length と label_length を取得する方法です。logit_length はマスクにエンコードされていると思いますが、y_pred._keras_mask を実行すると、結果は None になります。label_length については、情報はテンソル自体にありますが、それを取得する最も効率的な方法はわかりません。

ありがとう。

アップデート:

Tou You の回答に従って、tf.math.count_nonzero を使用して label_length を取得し、logit_length をロジット レイヤーの長さに設定します。

したがって、損失関数内の形状は (バッチ サイズ = 10) です。

もちろん、y_true と y_pred の 'None' は同じではありません。一方はバッチの最大文字列長であり、もう一方はバッチの時間フレームの最大数であるためです。ただし、 model.fit() を呼び出して、これらのパラメーターを使用して損失 tf.keras.backend.ctc_batch_cost() を呼び出すと、エラーが発生します。

y_true (92) の長さが y_pred (876) の長さと同じではないと不平を言っているようです。私は何が欠けていますか?

0 投票する
1 に答える
121 参照

python - LPRNet の信頼スコアを取得するにはどうすればよいですか?

私は、openvino ツールキットによって提供される LPRNet に取り組んでいる初心者です: https://github.com/openvinotoolkit/training_extensions

予測結果の確率を取得したいのですが、tf.nn.ctc_greedy_decoder返されるだけのようで、確率neg_sum_logitsに変換する方法がわかりません。

どうすればそれを入手できるか知っている人はいますか?どんな提案でも大歓迎です!ありがとう。