예제 #1
0
def main(test_data_path):
    
    dic = pickle.load(open('vocab.pkl','rb'))
    word_vocab = dic['word_vocab']
    char_vocab = dic['char_vocab']
    max_len = dic['max_len']
    batch_size = config.batch_size
    embed_dim = config.embed_dim
    out_channels = config.out_channels
    kernels = config.kernels
    hidden_size = config.hidden_size
    learning_rate = config.learning_rate
    seq_len = config.seq_len

    test_data, _ = corpus_to_word(test_data_path, batch_size)
    
    test_idx = word_to_idx(test_data,word_vocab)
    test_idx = test_idx.contiguous().view(batch_size, -1)

    test_data = word_to_char(test_data, char_vocab, max_len)
    test_data = torch.from_numpy(test_data)
    test_data = test_data.contiguous().view(batch_size, -1, max_len)

    model = LM(word_vocab,char_vocab,max_len,embed_dim,out_channels,kernels,hidden_size)

    if torch.cuda.is_available():
        model.cuda()


    model.load_state_dict(torch.load('model.pkl'))

    criterion = nn.CrossEntropyLoss()

    optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, weight_decay=1e-5)
    scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, 'min',factor=0.5,patience=1,verbose=True)

    hidden_state = (Variable(torch.zeros(2,batch_size,hidden_size).cuda(), volatile=False), 
                    Variable(torch.zeros(2,batch_size,hidden_size).cuda(), volatile=False))
    model.eval()
    test_loss = eval(seq_len,test_data,test_idx,model,hidden_state, criterion)
    test_loss = np.exp(test_loss)
예제 #2
0
        loss = criterion(output, val_targets.view(-1))
        val_loss += loss.data[0]
        count += 1
    print('Test  Loss: %.3f, Perplexity: %5.2f' %
          (val_loss / count, np.exp(val_loss / count)))

    return val_loss / count


model = LM(word_vocab, char_vocab, max_len, embed_dim, out_channels, kernels,
           hidden_size, batch_size)

if torch.cuda.is_available():
    model.cuda()

model.load_state_dict(torch.load('model.pkl'))

criterion = nn.CrossEntropyLoss()

optimizer = torch.optim.SGD(model.parameters(),
                            lr=learning_rate,
                            weight_decay=1e-5)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,
                                                       'min',
                                                       factor=0.5,
                                                       patience=1,
                                                       verbose=True)

hidden_state = (to_var(torch.zeros(2, batch_size, hidden_size)),
                to_var(torch.zeros(2, batch_size, hidden_size)))