Example #1
0
xs = sum(corpus_train, [])[:-1]
ts = sum(corpus_train, [])[1:]
corpus_val = sum(corpus_val, [])
corpus_test = sum(corpus_test, [])

model = BetterRnnlm(vocab_size, wordvec_size, hidden_size, dropout)
# optimizer = SGD(lr)
optimizer = Adam(lr=lr)
trainer = RnnlmTrainer(model, optimizer)

best_ppl = float('inf')
for epoch in range(max_epoch):
    trainer.fit(xs,
                ts,
                max_epoch=1,
                batch_size=batch_size,
                time_size=time_size,
                max_grad=max_grad)

    model.reset_state()
    ppl = eval_perplexity(model, corpus_val)
    print('검증 퍼플렉서티: ', ppl)

    if best_ppl > ppl:
        best_ppl = ppl
        model.save_params()
    else:
        lr /= 4.0
        optimizer.lr = lr

    model.reset_state()
xs = corpus[:-1]
ts = corpus[1:]

# モデルの生成
model = Rnnlm(vocab_size, wordvec_size, hidden_size)
optimizer = SGD(lr)
trainer = RnnlmTrainer(model, optimizer)

# パラメータの読み込み
#model.load_params()

# 勾配クリッピングを適用して学習
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()

# | epoch 4 |  iter 1321 / 1327 | time 2590[s] | perplexity 110.01
# evaluating perplexity ...
Example #3
0
max_epoch = 25
max_grad = 5.0

# Normal or Peeky? ==============================================
#model = Seq2seq(vocab_size, wordvec_size, hidden_size)
model = PeekySeq2seq(vocab_size, wordvec_size, hidden_size)
# ================================================================
optimizer = Adam()
trainer = RnnlmTrainer(model, optimizer)

best_ppl = float('inf')
t1 = time.time()
for epoch in range(max_epoch):
    flag = trainer.fit(xs,
                       ts,
                       mode,
                       max_epoch=1,
                       batch_size=batch_size,
                       max_grad=max_grad)

    model.reset_state()
    ppl = eval_perplexity(model, corpus)
    print('valid perplexity: ', ppl)

    if best_ppl > ppl:
        best_ppl = ppl
        model.save_params()
    else:
        lr /= 4.0
        optimizer.lr = lr

    model.reset_state()
Example #4
0
@author: ghqls
"""

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
time_size = 5
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()
Example #5
0
sys.path.append('..')
from common.optimizer import SGD
from common.trainer import RnnlmTrainer  # RnnlmTrainer 는 RNNLM 의 학습을 클래스 안으로 숨겨준다.
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)  # 먼저 model, optimzer 을 주어 초기화

trainer.fit(xs, ts, max_epoch, batch_size, time_size)  # fit 메서드를 통해 학습을 수행한다.
trainer.plot()