GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

sherjilozair

char-rnn-tensorflow – Tensorflowを使用したPythonの文字レベル言語モデル用のマルチレイヤリカレントニューラルネットワーク(L..

投稿日:

Tensorflowを使用したPythonの文字レベル言語モデル用のマルチレイヤリカレントニューラルネットワーク(LSTM、RNN)

char-rnn-tensorflow

Tensorflowを使用したPythonの文字レベル言語モデルのマルチレイヤリカレントニューラルネットワーク(LSTM、RNN)

Andrej Karpathyのchar-rnnからインスピレーションを得ました

要件

基本的な使用法

tinyshakespeareコーパスのデフォルトのパラメータを使って訓練するには、 python train.py実行します。 すべてのパラメータにアクセスするには、 python train.py --help使用しpython train.py --help

チェックポイントされたモデルからサンプルするには、 python sample.py 学習が進行中(最後のチェックポイントをチェックする)にサンプリングを行うのは、CPUまたは別のGPUを使用する場合のみです。 CPUモードを強制するには、 export CUDA_VISIBLE_DEVICES=""を使用し、その後はunset CUDA_VISIBLE_DEVICESset CUDA_VISIBLE_DEVICES=""set CUDA_VISIBLE_DEVICES= 、Windowsではset CUDA_VISIBLE_DEVICES=set CUDA_VISIBLE_DEVICES=します)。

中断後に訓練を続けたり、もっと多くのエポックを実行するには、 python train.py --init_from=save

データセット

任意のプレーンテキストファイルを入力として使用できます。 例えば、 完全なSherlock Holmesを次のようにダウンロードすることができます:

cd data
mkdir sherlock
cd sherlock
wget https://sherlock-holm.es/stories/plain-text/cnus.txt
mv cnus.txt input.txt

その後、 python train.py --data_dir=./data/sherlock/

小さな異種の多くの.txtファイルを1つの大きなトレーニングファイルに連結する簡単なヒント: ls *.txt | xargs -L 1 cat >> input.txt ls *.txt | xargs -L 1 cat >> input.txt

チューニング

あなたのモデルをチューニングすることは、この時点では「暗い芸術」のようなものです。 一般に:

  1. 可能な限り多くのクリーンなinput.txtから始めます。例えば50MiB
  2. まず、デフォルト設定を使用してベースラインを確立します。
  3. テンソルボードを使用して、すべての実行を視覚的に比較し、実験に役立てます。
  4. あなたが入力データをたくさん持っているならば、–rnn_sizeを128から多少調整してください。
  5. あなたが経験を持っていなければ、2から3までの–num_layersを微調整してください。
  6. 有効な入力文字列の長さに基づいて50から-seq_lengthを調整します(たとえば、名前は<12文字、文章は最大64文字など)。 lstmセルは、このシーケンスより長い持続時間を「記憶」しますが、文字距離が長いほど効果は低下します。
  7. 最後にすべてのことをやったら、ドロップアウトを追加することをお勧めします。 –output_keep_prob 0.8で起動し、上記の値をすべて使い果たした後で、–input_keep_prob 0.8 –output_keep_prob 0.5の両方で終わる可能性があります。

テンソルボード

トレーニングの進行状況、モデルグラフ、および内部状態ヒストグラムを視覚化するには、 log_dirし、 log_dirでポイントします。 例えば:

$ tensorboard --logdir=./logs/

ブラウザを開いてhttp:// localhost:6006または正しいIP /ポートを指定します。

ロードマップ

  • 説明コメントを追加
  • より多くのコマンドライン引数を公開する
  • char-rnnを使用して精度とパフォーマンスを比較する
  • その他のテンソルボード計測器

貢献する

気をつけてください:

  • 問題にフィードバックを残す
  • プルリクエストを開く
  • gittrのチャットに参加する
  • 成功事例とデータセットを共有しましょう!







-sherjilozair

執筆者: