def main(): # ハイパーパラメータの設定 batch_size = 20 wordvec_size = 100 hidden_size = 100 # RNNの隠れ状態ベクトルの要素数 time_size = 35 # RNNを展開するサイズ lr = 20.0 max_epoch = 4 max_grad = 0.25 # 学習データの読み込み corpus, word_to_id, id_to_word = ptb.load_data('train') corpus_test, _, _ = ptb.load_data('test') vocab_size = len(word_to_id) xs = corpus[:-1] ts = corpus[1:] # モデルの生成 model = Rnnlm(vocab_size, wordvec_size, hidden_size) optimizer = SGD(lr) trainer = RnnlmTrainer(model, optimizer) # 勾配クリッピングを適用して学習 trainer.fit(xs, ts, max_epoch, batch_size, time_size, max_grad, eval_interval=20) ''' eval_interval=20 20イテレーションごとにパープレキシティを評価 ''' trainer.plot(ylim=(0, 500)) # テストデータで評価 model.reset_state() ppl_test = eval_perplexity(model, corpus_test) print('test perplexity: ', ppl_test) # パラメータの保存 model.save_params()
sys.path.append('..') from common.optimizer import SGD from common.trainer import RnnlmTrainer from dataset import ptb from ch05.simple_rnnlm import SimpleRnnlm # ハイパーパラメータの設定 batch_size = 10 wordvec_size = 100 hidden_size = 100 # RNNの隠れ状態ベクトルの要素数 time_size = 5 # RNNを展開するサイズ lr = 0.1 max_epoch = 100 # 学習データの読み込み corpus, word_to_id, id_to_word = ptb.load_data('train') corpus_size = 1000 # テスト用にデータセットを小さくする corpus = corpus[:corpus_size] vocab_size = int(max(corpus) + 1) xs = corpus[:-1] # 入力 ts = corpus[1:] # 出力(教師ラベル) # モデルの生成 model = SimpleRnnlm(vocab_size, wordvec_size, hidden_size) optimizer = SGD(lr) trainer = RnnlmTrainer(model, optimizer) trainer.fit(xs, ts, max_epoch, batch_size, time_size) trainer.plot()
hidden_size = 100 # RNNの隠れ状態ベクトルの要素数 time_size = 35 # RNNを展開するサイズ lr = 20.0 max_epoch = 4 max_grad = 0.25 # 学習データの読み込み corpus, word_to_id, id_to_word = ptb.load_data('train') corpus_test, _, _ = ptb.load_data('test') vocab_size = len(word_to_id) xs = corpus[:-1] ts = corpus[1:] # モデルの生成 model = Rnnlm(vocab_size, wordvec_size, hidden_size) optimizer = SGD(lr) trainer = RnnlmTrainer(model, optimizer) # 勾配クリッピングを適用して学習 trainer.fit(xs, ts, max_epoch, batch_size, time_size, max_grad, eval_interval=20) trainer.plot(ylim=(0, 500)) # テストデータで評価 model.reset_state() ppl_test = eval_perplexity(model, corpus_test) print('test perplexity: ', ppl_test) # パラメータの保存 model.save_params()
model.save_params() else: lr /= 4.0 optimizer.lr = lr model.reset_state() print('-' * 50) if(flag == 1): break t2 = time.time() ''' eval_interval : そこで設定したイテレーションおきにパープレキシティを評価 ''' trainer.plot(ylim=(0, 500)) #グラフの描画 #テストデータで評価 ''' 学習終了後にテストデータを使用してパープレキシティを評価 ''' ''' model.reset_state() #LSTMの隠れ状態と記憶セルをリセット ppl_test = eval_perplexity(model, corpus) print('test perplexity: ', ppl_test) ''' #パラメータの保存 model.save_params() #学習後のパラメータを外部ファイルに保存 print("測定時間:%.2f" % (t2-t1))
import sys sys.path.append('..') from common.optimizer import SGD from common.trainer import RnnlmTrainer from dataset import ptb from simple_rnnlm import SimpleRnnlm # ハイパーパラメータの設定 batch_size = 10 wordvec_size = 100 hidden_size = 100 # RNNの隠れ状態ベクトルの要素数 time_size = 5 # RNNを展開するサイズ lr = 0.1 max_epoch = 100 # 学習データの読み込み corpus, word_to_id, id_to_word = ptb.load_data('train') corpus_size = 1000 # テスト用にデータセットを小さくする corpus = corpus[:corpus_size] vocab_size = int(max(corpus) + 1) xs = corpus[:-1] # 入力 ts = corpus[1:] # 出力(教師ラベル) # モデルの生成 model = SimpleRnnlm(vocab_size, wordvec_size, hidden_size) optimizer = SGD(lr) trainer = RnnlmTrainer(model, optimizer) trainer.fit(xs, ts, max_epoch, batch_size, time_size) trainer.plot(path='../output/05-train.png')
from dataset import ptb from rnnlm import Rnnlm batch_size = 20 wordvec_size = 100 hidden_size = 100 time_size = 35 lr = 20.0 max_epoch = 4 max_grad = 0.25 corpus, word_to_id, id_to_word = ptb.load_data('train') corpus_test, _, _ = ptb.load_data('test') vocab_size = len(word_to_id) xs = corpus[:-1] ts = corpus[1:] model = Rnnlm(vocab_size, wordvec_size, hidden_size) optimizer = SGD(lr) trainer = RnnlmTrainer(model, optimizer) trainer.fit(xs, ts, max_epoch, batch_size, time_size, max_grad, eval_interval=20) trainer.plot(ylim=(0, 500), path='../output/06-train.png') model.reset_state() ppl_test = eval_perplexity(model, corpus_test) print('Test perplexity: ', ppl_test) model.save_params()