Beispiel #1
0
def main():
    # ハイパーパラメータの設定
    window_size = 5
    hidden_size = 100
    batch_size = 100
    max_epoch = 10

    # データの読み込み
    corpus, word_to_id, id_to_word = ptb.load_data('train')
    vocab_size = len(word_to_id)

    contexts, target = create_contexts_target(corpus, window_size)

    # モデルなどの生成
    model = CBOW(vocab_size, hidden_size, window_size, corpus)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    # 学習開始
    trainer.fit(contexts, target, max_epoch, batch_size)
    trainer.plot()

    # 後ほど利用できるように、必要なデータを保存
    word_vecs = model.word_vecs

    params = {}
    params['word_vecs'] = word_vecs.astype(np.float16)
    params['word_to_id'] = word_to_id
    params['id_to_word'] = id_to_word
    pkl_file = 'cbow_params.pkl'
    with open(pkl_file, 'wb') as f:
        pickle.dump(params, f, -1)
Beispiel #2
0
def main():
    max_epoch = 300
    batch_size = 30
    hidden_size = 10
    output_size = 3
    learning_rate = 1.0

    x, t = spiral.load_data()
    model = TwoLayerNet(2, hidden_size, output_size)
    optimizer = SGD(learning_rate)
    trainer = Trainer(model, optimizer)
    trainer.fit(x, t, max_epoch, batch_size)
    trainer.plot()
Beispiel #3
0
def main():
    window_size = 1
    hidden_size = 5
    batch_size = 3
    max_epoch = 1000

    text = 'You say goodbye and I say hello.'
    corpus, word_to_id, id_to_word = preprocess(text)

    vocab_size = len(word_to_id)
    contexts, target = create_contexts_target(corpus, window_size)
    target = convert_one_hot(target, vocab_size)
    contexts = convert_one_hot(contexts, vocab_size)

    model = SimpleCBOW(vocab_size, hidden_size)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    trainer.fit(contexts, target, max_epoch, batch_size)
    trainer.plot()
Beispiel #4
0
def test_train_word2vec_model():
    """word2vecモデルの学習
    """

    window_size = 1
    hidden_size = 5 # 単語の分散表現ベクトルの次元数
    batch_size = 3
    max_epoch = 1000

    text = 'You say goodbye and I say hello.'

    # コーパスの作成
    corpus, word_to_id, id_to_word = preprocess(text)

    # コンテキストとターゲットの作成
    vocab_size = len(word_to_id)
    contexts, target = create_context_target(corpus, window_size)
    target = convert_one_hot(target, vocab_size)
    contexts = convert_one_hot(contexts, vocab_size)
    print("one-hot target: ", target)
    print("one-hot contexts: ", contexts)

    # CBOWモデル
    model = SimpleCBOW(vocab_size, hidden_size)
    optimizer = Adam()

    # trainer
    trainer = Trainer(model, optimizer)

    # 学習
    trainer.fit(contexts, target, max_epoch=max_epoch, batch_size=batch_size)
    trainer.plot()

    # CBOWの重み(W_in)を取得する
    word_vecs = model.word_vecs
    for word_id, word in id_to_word.items():
        print(word, word_vecs[word_id])
Beispiel #5
0
max_epoch = 1000

text = 'You say goodbye and I say hello.'
corpus, word_to_id, id_to_word = preprocess(text)

vocab_size = len(word_to_id)
contexts, target = create_contexts_target, convert_one_hot

window_size = 1
hidden_size = 5
batch_size = 3
max_epoch = 1000

text = 'You say goodbye and I say hello.'
corpus, word_to_id, id_to_word = preprocess(text)

vocab_size = len(word_to_id)
contexts, target = create_contexts_target(corpus, window_size)
target = convert_one_hot(target, vocab_size)
contexts = convert_one_hot(contexts, vocab_size)

model = SimpleCBOW(vocab_size, hidden_size)
optimizer = Adam()
trainer = Trainer(model, optimizer)

trainer.fit(contexts, target, max_epoch, batch_size)
trainer.plot()

word_vecs = model.word_vecs
for word_id, word in id_to_word.items():
    print(word, word_vecs[word_id])
Beispiel #6
0
                                   x_test,
                                   t_test,
                                   guess_test,
                                   encoding=encoding)

# Save result as csv as utf-8 with BOM
# Excelで文字化けさせたくない場合はこっちで保存
result_train_csv = save_dir / ("result_" + dataset_name + "_" + modelname +
                               "_train_bom.csv")
result_test_csv = save_dir / ("result_" + dataset_name + "_" + modelname +
                              "_test_bom.csv")
df_result_train = seq.result_to_csv(result_train_csv,
                                    x_train,
                                    t_train,
                                    guess_train,
                                    encoding="utf_8_sig")
df_result_test = seq.result_to_csv(result_test_csv,
                                   x_test,
                                   t_test,
                                   guess_test,
                                   encoding="utf_8_sig")

# Plot learning curve and save it as png image
image_path = save_dir / ('result_' + dataset_name + "_" + modelname + '.png')
trainer.plot(image_path=image_path, log_scale=False)

# Save parameters
pickle_path = model_dir / (dataset_name + "_" + modelname + '_epoch' +
                           max_epoch + "_" + timestamp + '.pkl')
model.save_params(file_name=pickle_path)
Beispiel #7
0
import sys
sys.path.append("..")
from common.trainer import Trainer
from common.optimizer import Adam
from simple_cbow import SimpleCBOW
from common.util import preprocess, create_contexts_target, convert_one_hot

window_size = 1
hidden_size = 5
batch_size = 3
max_epoch = 1000

text = 'You say goodbye and I say hello .'
corpus, word_to_id, id_to_word = preprocess(text)

vocab_size = len(word_to_id)
contexts, target = create_contexts_target(corpus, window_size)
target = convert_one_hot(target, vocab_size)
contexts = convert_one_hot(contexts, vocab_size)

model = SimpleCBOW(vocab_size, hidden_size)
optimizer = Adam()
trainer = Trainer(model, optimizer)

trainer.fit(contexts, target, max_epoch, batch_size)
trainer.plot(path='../output/03-train.png')

word_vecs = model.word_vecs
for word_id, word in id_to_word.items():
    print(word, word_vecs[word_id])
Beispiel #8
0
import sys
sys.path.append("..")
from common.trainer import Trainer
from common.optimizer import Adam
from simple_skip_gram import SimpleSkipGram
from common.util import preprocess, create_contexts_target, convert_one_hot

window_size = 1
hidden_size = 5
batch_size = 3
max_epoch = 1000

text = 'You say goodbye and I say hello .'
corpus, word_to_id, id_to_word = preprocess(text)

vocab_size = len(word_to_id)
contexts, target = create_contexts_target(corpus, window_size)
target = convert_one_hot(target, vocab_size)
contexts = convert_one_hot(contexts, vocab_size)

model = SimpleSkipGram(vocab_size, hidden_size)
optimizer = Adam()
trainer = Trainer(model, optimizer)

trainer.fit(contexts, target, max_epoch, batch_size)
trainer.plot(path='../output/03-train_skip_gram.png')

word_vecs = model.word_vecs
for word_id, word in id_to_word.items():
    print(word, word_vecs[word_id])
Beispiel #9
0
    # model = AttentionSeq2seq(vocab_size, wordvec_size, hidden_size)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)
    print("Cross Validation: iter", str(i+1))
    # Train
    trainer.fit(x_train, t_train, x_test, t_test,
                max_epoch=max_epoch,
                batch_size=batch_size,
                max_grad=max_grad)

    # Inference
    start_id = seq.start_id
    sample_size = seq.sample_size
    guess_train = model.generate(x_train, start_id, sample_size)
    guess_test = model.generate(x_test, start_id, sample_size)

    # Save result as csv
    suffix = "_cv" + str(i + 1)
    result_train_csv = result_dir / ("result_" + dataset_name + "_" + model.__class__.__name__ + "_train"+ suffix +".csv")
    result_test_csv = result_dir / ("result_" + dataset_name + "_" + model.__class__.__name__ + "_test"+ suffix +".csv")

    seq.result_to_csv(result_train_csv, x_train, t_train, guess_train, encoding=encoding)
    seq.result_to_csv(result_test_csv, x_test, t_test, guess_test, encoding=encoding)

    # Plot learning curve and save it as png image
    image_path = result_dir / ('result_' + dataset_name + "_" + model.__class__.__name__ + suffix + '.png')
    trainer.plot(image_path)

    # release memory
    del model, optimizer, trainer
Beispiel #10
0
# coding: utf-8
import sys
sys.path.append('..')  # 親ディレクトリのファイルをインポートするための設定
from common.optimizer import SGD
from common.trainer import Trainer
from dataset import spiral
from two_layer_net import TwoLayerNet

# ハイパーパラメータの設定
max_epoch = 300
batch_size = 30
hidden_size = 10
learning_rate = 1.0

x, t = spiral.load_data()
model = TwoLayerNet(input_size=2, hidden_size=hidden_size, output_size=3)
optimizer = SGD(lr=learning_rate)

trainer = Trainer(model, optimizer)
trainer.fit(x, t, max_epoch, batch_size, eval_interval=10)
trainer.plot(path='../output/01-plot.png')