コード例 #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)
コード例 #2
0
ファイル: train_seq2seq.py プロジェクト: YaGiNA/DLfS2
def train_eval(x_train, x_test, is_peeky):
    if is_peeky:
        model = PeekySeq2seq(vocab_size, wordvec_size, hidden_size)
    else:
        model = Seq2seq(vocab_size, wordvec_size, hidden_size)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    acc_list = []
    for epoch in range(max_epoch):
        trainer.fit(x_train,
                    t_train,
                    max_epoch=1,
                    batch_size=batch_size,
                    max_grad=max_grad)
        correct_num = 0
        for i in range(len(x_test)):
            question, correct = x_test[[i]], t_test[[i]]
            verbose = i < 10
            correct_num += eval_seq2seq(model, question, correct, id_to_char,
                                        verbose)
        acc = float(correct_num) / len(x_test)
        acc_list.append(acc)
        print('val acc %.3f%%' % (acc * 100))
    return acc_list
コード例 #3
0
ファイル: sample.py プロジェクト: jojonki/BabyNet
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()
コード例 #4
0
def main():

    # データセットの読み込み
    (x_train, t_train), (x_test, t_test) = sequence.load_data('addition.txt')
    char_to_id, id_to_char = sequence.get_vocab()

    # 入力列を逆順にするとSeq2Se2の精度が上がるらしいが。。。クソ理論
    is_reverse = True
    if is_reverse:
        x_train, x_test = x_train[:, ::-1], x_test[:, ::-1]

    # ハイパーパラメータの設定
    vocab_size = len(char_to_id)
    wordvec_size = 16
    hidden_size = 128
    batch_size = 128
    max_epoch = 25
    max_grad = 5.0

    # モデル/オプティマイザ/トレーナーの生成
    # model = Seq2seq(vocab_size, wordvec_size, hidden_size)
    model = PeekySeq2seq(vocab_size, wordvec_size, hidden_size)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    acc_list = []
    for epoch in range(max_epoch):
        trainer.fit(x_train,
                    t_train,
                    max_epoch=1,
                    batch_size=batch_size,
                    max_grad=max_grad)

        correct_num = 0
        for i in range(len(x_test)):
            question, correct = x_test[[i]], t_test[[i]]
            verbose = i < 10
            correct_num += eval_seq2seq(model, question, correct, id_to_char,
                                        verbose)

        acc = float(correct_num) / len(x_test)
        acc_list.append(acc)
        print(f'val acc {acc * 100}')
コード例 #5
0
ファイル: train.py プロジェクト: MATOBAD/NLP
def main():
    # データの読み込み
    (x_train, t_train), (x_test, t_test) = sequence.load_data('date.txt')
    char_to_id, id_to_char = sequence.get_vocab()

    # 入力文を反転
    x_train, x_test = x_train[:, ::-1], x_test[:, ::-1]

    # ハイパーパラメータの設定
    vocab_size = len(char_to_id)
    wordvec_size = 16
    hidden_size = 256
    batch_size = 128
    max_epoch = 10
    max_grad = 5.0

    model = AttentionSeq2seq(vocab_size, wordvec_size, hidden_size)
    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    acc_list = []
    for epoch in range(max_epoch):
        trainer.fit(x_train,
                    t_train,
                    max_epoch=1,
                    batch_size=batch_size,
                    max_grad=max_grad)

        correct_num = 0
        for i in range(len(x_test)):
            question, correct = x_test[[i]], t_test[[i]]
            verbose = i < 10
            correct_num += eval_seq2seq(model,
                                        question,
                                        correct,
                                        id_to_char,
                                        verbose,
                                        is_reverse=True)

        acc = float(correct_num) / len(x_test)
        acc_list.append(acc)
        print('val acc %.3f%%' % (acc * 100))
コード例 #6
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()
コード例 #7
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])
コード例 #8
0
ファイル: ch03_.py プロジェクト: irohaui/deep-learning
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])
コード例 #9
0
    wordvec_size = 16
    hidden_size = 256
    batch_size = 128
    max_epoch = 4
    max_grad = 5.0

    model = AttentionSeq2seq(vocab_size, wordvec_size, hidden_size)

    optimizer = Adam()
    trainer = Trainer(model, optimizer)

    acc_list = []
    for epoch in range(max_epoch):
        trainer.fit(x_train,
                    t_train,
                    max_epoch=1,
                    batch_size=batch_size,
                    max_grad=max_grad)

        correct_num = 0
        for i in range(len(x_test)):
            question, correct = x_test[[i]], t_test[[i]]
            verbose = i < 10
            correct_num += eval_seq2seq(model,
                                        question,
                                        correct,
                                        id_to_char,
                                        verbose,
                                        is_reverse=True)

        acc = float(correct_num) / len(x_test)
コード例 #10
0
x_test = pickle.load(x_test)
y_test = open(y_train_list[-1], "rb")
y_test = pickle.load(y_test)
x_test = x_test[0:30]
y_test = y_test[0:30]


for epoch in range(max_epoch):
    # 分割したファイルを分けて開く
    for i in range(3, len(x_train_list)):
        x_train = open(x_train_list[i], "rb")
        x_train = pickle.load(x_train)
        y_train = open(y_train_list[i], "rb")
        y_train = pickle.load(y_train)
        for u in range(301):
            trainer.fit(x_train[u * 100:(u + 1) * 100], y_train[u * 100:(u + 1) * 100], max_epoch=1, batch_size=batch_size, max_grad=max_grad)
        if i%100==0:
            model.save_params()
        print(int(i / len(x_train_list)), "%", "completed...")
        if i % 2 == 0:
            # 念の為、訓練データのメモリ解放を行う
            x_train = ""
            y_train = ""
            # テストデータに対する評価
            x_test = open(x_train_list[-1], "rb")
            x_test = pickle.load(x_test)
            y_test = open(y_train_list[-1], "rb")
            y_test = pickle.load(y_test)
            x_test = x_test[0:30]
            y_test = y_test[0:30]
            correct_num = 0
コード例 #11
0
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()
コード例 #12
0
ファイル: train_seq2seq.py プロジェクト: bbbnodx/seq2seq
# model = Seq2seq(vocab_size, wordvec_size, hidden_size)
model = PeekySeq2seq(vocab_size, wordvec_size, hidden_size)
# model = AttentionSeq2seq(vocab_size, wordvec_size, hidden_size)
# model = Seq2seqBiLSTM(vocab_size, wordvec_size, hidden_size)
# model = PeekySeq2seqBiLSTM(vocab_size, wordvec_size, hidden_size)
# model = AttentionSeq2seqBiLSTM(vocab_size, wordvec_size, hidden_size)

optimizer = Adam()
trainer = Trainer(model, optimizer)

# Train
print("Target dataset:", dataset_name)
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)

## 結果の保存
# 保存ファイルのファイル名生成
modelname = model.__class__.__name__
timestamp = datetime.now().strftime("_%y%m%d_%H%M")
save_dir = result_dir / (dataset_name + timestamp)
コード例 #13
0
    [[[1 0 0 0 0 0 0]
      [0 0 1 0 0 0 0]]
    <BLANKLINE>
     [[0 1 0 0 0 0 0]
      [0 0 0 1 0 0 0]]
    <BLANKLINE>
     [[0 0 1 0 0 0 0]
      [0 0 0 0 1 0 0]]
    <BLANKLINE>
     [[0 0 0 1 0 0 0]
      [0 1 0 0 0 0 0]]
    <BLANKLINE>
     [[0 0 0 0 1 0 0]
      [0 0 0 0 0 1 0]]
    <BLANKLINE>
     [[0 1 0 0 0 0 0]
      [0 0 0 0 0 0 1]]]
    """
    print(contexts_one_hot)


model = SimpleSkipGram(vocabulary_size, hidden_size)
optimizer = Adam()
trainer = Trainer(model, optimizer)
trainer.fit(contexts_one_hot, target_one_hot, 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])
コード例 #14
0
                    num_encoders=1,
                    num_decoders=1)

if os.path.isfile("../pkl/myTransformer_params.pkl"):
    model.load_params("../pkl/myTransformer_params.pkl")

optimizer = Adam(lr=0.00001)
# optimizer = SGD(lr=0.00005)
# optimizer = RMSprop(lr=0.00005)
trainer = Trainer(model, optimizer)

acc_list = []
for epoch in range(max_epoch):
    trainer.fit(x_train,
                t_train,
                max_epoch=1,
                batch_size=batch_size,
                max_grad=max_grad,
                eval_interval=10)
    model.save_params('../pkl/myTransformer_params.pkl')

    correct_num = 0
    for i in range(len(x_test)):
        question, correct = x_test[[i]], t_test[[i]]
        verbose = i < 10
        correct_num += eval_transformer(model,
                                        question,
                                        correct,
                                        preprocessing.id_to_word,
                                        preprocessing.word_to_id['<eos>'],
                                        verbose,
                                        is_reverse=False)