Пример #1
0
import models
import nrekit
import sys
import torch
from torch import optim
from nrekit.data_loader import JSONFileDataLoader as DataLoader


max_length = 40
train_data_loader = DataLoader('./data/train.json', './data/glove.6B.50d.json', max_length=max_length)
val_data_loader = DataLoader('./data/val_select.json', './data/glove.6B.50d.json', max_length=max_length)
test_data_loader = DataLoader('./data/test.json', './data/glove.6B.50d.json', max_length=max_length)
distant = DataLoader('./data/distant.json', './data/glove.6B.50d.json', max_length=max_length, distant=True)

framework = nrekit.framework.Framework(train_data_loader, val_data_loader, test_data_loader, distant)
sentence_encoder = nrekit.sentence_encoder.CNNSentenceEncoder(train_data_loader.word_vec_mat, max_length)
sentence_encoder2 = nrekit.sentence_encoder.CNNSentenceEncoder(train_data_loader.word_vec_mat, max_length)

model2 = models.snowball_siamese.Siamese(sentence_encoder2, hidden_size=230)
model = models.snowball_siamese.Snowball(sentence_encoder, base_class=train_data_loader.rel_tot, siamese_model=model2, hidden_size=230)

# load pretrain
checkpoint = torch.load('./checkpoint/cnn_encoder_on_fewrel.pth.tar.bak')['state_dict']
checkpoint2 = torch.load('./checkpoint/cnn_siamese_euc_on_fewrel.pth.tar.bak')['state_dict']
for key in checkpoint2:
    checkpoint['siamese_model.' + key] = checkpoint2[key]
model.load_state_dict(checkpoint)
model.cuda()
model.train()
model_name = 'cnn_snowball_euc'
import models
import nrekit
import sys
from torch import optim
from nrekit.data_loader import JSONFileDataLoader as DataLoader

max_length = 40
train_data_loader = DataLoader('./data/train_train.json', './data/glove.6B.50d.json', max_length=max_length)
val_data_loader = DataLoader('./data/train_val.json', './data/glove.6B.50d.json', max_length=max_length, rel2id=train_data_loader.rel2id, shuffle=False)

framework = nrekit.framework.SuperviseFramework(train_data_loader, val_data_loader)
sentence_encoder = nrekit.sentence_encoder.CNNSentenceEncoder(train_data_loader.word_vec_mat, max_length)
model = models.snowball.Siamese(sentence_encoder, hidden_size=230)

model_name = 'cnn_siamese_on_fewrel'

# set optimizer
batch_size = 128
train_iter = 30000

parameters_to_optimize = filter(lambda x:x.requires_grad, model.parameters())
optimizer = optim.SGD(parameters_to_optimize,
        1.,
        weight_decay=1e-5)

framework.train_siamese(model, model_name, optimizer=optimizer, batch_size=batch_size, train_iter=train_iter, learning_rate=1., warmup=True)
Пример #3
0
import models
import nrekit
import sys
from torch import optim
from nrekit.data_loader import JSONFileDataLoader as DataLoader

from pytorch_pretrained_bert import BertAdam

max_length = 40
train_data_loader = DataLoader('./data/train_train.json',
                               './data/glove.6B.50d.json',
                               max_length=max_length)
val_data_loader = DataLoader('./data/val.json',
                             './data/glove.6B.50d.json',
                             max_length=max_length)

framework = nrekit.framework.SuperviseFramework(train_data_loader,
                                                val_data_loader)
sentence_encoder = nrekit.sentence_encoder.CNNSentenceEncoder(
    train_data_loader.word_vec_mat, max_length)
model = models.snowball_euc.Siamese(sentence_encoder, hidden_size=230)

model_name = 'cnn_siamese_euc_on_fewrel'

checkpoint = framework.__load_model__('./checkpoint/' + model_name +
                                      '.pth.tar.bak')
model.load_state_dict(checkpoint['state_dict'])
model.cuda()

framework.eval_siamese(model,
                       eval_iter=500,