0

最近、記事Towards End-to-End Speech Recognition with Deep Convolutional Neural Networksにテンソルフローを使用してcnn + ctcネットワークベースを実装しようとしました。cnn + ctcネットワークでtf.nn.ctc_lossを使用する方法

バッチスペクトログラムデータ(形状:(10,120,155,3)、batch_sizeは10)を畳み込み層10と完全に連結した層3に供給しようとします。したがって、ctcレイヤーを接続する前の出力は2dデータ(シェイプ:(10,1024))です。

テンソルフローライブラリでtf.nn.ctc_loss関数を使用しますが、が生成されます。ValueError:寸法は2でなければならないが、 'transpose'(op: 'Transpose')形状:[?, 1024]、[3]

エラーは、私の2次元入力データの次元に関連していると思います。 tensorflow公式サイトのctc_loss関数の記述には、形状(batch_size x max_time x num_classes)の3d入力が必要です。

だから、 'num_classes'の余分な次元は何ですか?私のcnn + fc出力データの形状を変更する必要はありますか?

+0

コードを確認するには、https://github.com/mozilla/DeepSpeech/blob/master/DeepSpeech.py​​でctc.lossの使用方法を確認してください。特定の問題に関するヘルプを得るには、実際に記述したコードを表示する必要があります。 –

答えて

0

完全接続層は、時間ステップごとに適用する必要があります。 リカレントニューラルネットワークでは、時間ステップごとに同じ高密度レイヤーを適用するようなものです。 畳み込み層の出力の場合、時間ステップは幅です。

そこで、例えば、出力形状は次のようになります

  1. 畳み込み:(10,120,155,3)=(バッチ、高さ、幅、チャネル)
  2. 平坦化(* 3 10、155、120) =(バッチ、MAX_TIME、機能)完全に接続
  3. :(10、155、1024)、(時間ステップごとに適用同じ緻密層)
  4. (10、155、num_classes)

それがEXPEありますtensorflowにおけるctc_lossのcted shape。

関連する問題