Github: https://github.com/sherjilozair/char-rnn-tensorflow
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_DEVICES
( set 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
。
チューニング
あなたのモデルをチューニングすることは、この時点では「暗い芸術」のようなものです。 一般に:
- 可能な限り多くのクリーンなinput.txtから始めます。例えば50MiB
- まず、デフォルト設定を使用してベースラインを確立します。
- テンソルボードを使用して、すべての実行を視覚的に比較し、実験に役立てます。
- あなたが入力データをたくさん持っているならば、–rnn_sizeを128から多少調整してください。
- あなたが経験を持っていなければ、2から3までの–num_layersを微調整してください。
- 有効な入力文字列の長さに基づいて50から-seq_lengthを調整します(たとえば、名前は<12文字、文章は最大64文字など)。 lstmセルは、このシーケンスより長い持続時間を「記憶」しますが、文字距離が長いほど効果は低下します。
- 最後にすべてのことをやったら、ドロップアウトを追加することをお勧めします。 –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のチャットに参加する
- 成功事例とデータセットを共有しましょう!