2

何かを根本的に誤解しているように感じます。Kerasのドキュメントを調べても役に立ちませんでした。ニューラル ネットワークに ctc_batch_cost 損失を実装しようとしています。私のニューラル ネットワークは、4 + 1 シンボルのソフトマックス出力を使用してシーケンスを高密度レイヤーに返す LSTM レイヤーで終了します。出力形状には 20 の時間ステップがあり、次のようになります。

(. . .)
_________________________________________________________________
lstm_1 (LSTM)                (None, 20, 32)            8320      
_________________________________________________________________
dense_1 (Dense)              (None, 20, 5)             165       
=================================================================

私のラベルは、可変長の、出力されるべき単なる文字列です。

CTC関数での私の試みは次のとおりです。

def ctc_custom(prediction_batch, label_batch):
    pred_batch_size = prediction_batch.get_shape().as_list() # returns (?,?,?) at compile time
    label_batch_size = label_batch.get_shape().as_list()
    samples = pred_batch_size[0]

    input_length = tf.placeholder([[20] for x in range(samples)])
    label_length = tf.placeholder([[len(l)] for l in label_batch_size])
    return ctc_batch_cost(label_batch, prediction_batch, input_length, label_length)

もちろん、現在、Tensorflow は現在、次のエラーを出しています:

TypeError: 'NoneType' object cannot be interpreted as an integer

コンパイル時にsampleswill などの変数があるため、これは理解できますNone。しかし、私はこれをどのように使用するかについて途方に暮れています。ヒントをいただければ幸いです。簡単に修正するだけでなく、何が起こっているのかを理解したいのです。プレースホルダーをテストしNoneて返そうとしましたが、それも機能せず、そもそもハックのように感じました。

ありがとうございました

4

0 に答える 0