2017-03-03 9 views
4

私はkerasを使って非常に大きなテキストデータセットにニューラルネットを作成しています。モデルを構築し、すべてが機能していることを確認するために、私はデータの一部をメモリに読み込み、ケラス 'Tokenizer'を使って、各単語をトークンにマッピングするなど、必要な前処理を行います。次に、model.fit()を使用します。Keras:テキストデータにfit_generator()を付けたTokenizer

ここでは、完全なデータセットに拡張し、すべてのデータをメモリに読み込むためのスペースがないようにしたいと考えています。ですから、ディスクから順にデータを読み込み、model.fit_generator()を使うジェネレータ関数を作りたいと思います。しかし、これを行うと、Tokenizerオブジェクトをデータの各バッチに個別に収め、各バッチごとに異なる単語とトークンのマッピングを提供します。とにかくこれの周りにはありますか?ケラスを使ってトークン辞書を構築する方法はありますか?

+1

1):あなたが1から発電機を持っていたら、あなたは、単にでtokenizer.fit_on_text方法を適用することができるmodel.fit_generator

  • に使用します。 2)前処理タスクを分離し、ハードドライブ上にマッピングオブジェクトを保存し、バッチの生成でトランスフォームを実行するのはなぜですか? –

  • 答えて

    1

    だから、基本的にはテキスト・ジェネレータを定義し、次のようにしてfit_on_text方法にそれを養うことができます:あなたはディスクから部分的にあなたのデータを読み取り、テキストの反復可能なコレクションを返してtexts_generatorを持っていると仮定すると

    1. あなたが定義することができます。

      def text_generator(texts_generator): 
          for texts in texts_generator: 
           for text in texts: 
            yield text 
      

      を使用すると、ディスクからのデータの全体を読んだ後、この発電機の停止を行う必要があります注意してください - 可能あなたがしたいオリジナルの発電機を変更するには作ることができるものあなたが現在やっていることのいくつかのコードを示し

      tokenizer.fit_on_text(text_generator) 
      
    +0

    ありがとう、私は 'fit_on_texts'メソッド自体にジェネレータを渡すことは考えていませんでした。私はこれを試して、それがどのように動作するかを教えてあげます。 –

    +0

    私はそれが動作することを確認した。発電機がある時点で停止するように注意してください。 –

    関連する問題