Beispiel #1
0
ntokens = len(word2idx)

train_path = os.path.join(args.data_path, 'fisher_' + args.dtype, \
        'train.pickle')
valid_path = os.path.join(args.data_path, 'fisher_' + args.dtype, \
        'valid.pickle')
train_data = pickle.load(open(train_path))
valid_data = pickle.load(open(valid_path))

train_batches = batchify(train_data, args.batch_size)
valid_batches = batchify(valid_data, args.batch_size)

###############################################################################
# Build the model
###############################################################################
model = lm_model.RNNModel(args.model_type, ntokens, args.emsize, \
        args.nhid, args.nlayers, args.dropout, args.tied).to(device)

pad_idx = word2idx['<pad>']
criterion = nn.CrossEntropyLoss(ignore_index=pad_idx)
params = filter(lambda p: p.requires_grad, model.parameters())
optimizer = optim.Adam(params, lr=args.lr)
cuda = torch.cuda.is_available()

###############################################################################
# Training code
###############################################################################


def get_batch(batch):
    current_batch_size = len(batch)
    # pad sequence, ensure correct dimensions
bitch_size = args.batch_size
train_loader = torch.utils.data.DataLoader(dataset=train_data,
                                           batch_size=bitch_size,
                                           shuffle=True,
                                           collate_fn=data.collate_fn)

print('The size of the dictionary is', len(Corpus_Dic))

###############################################################################
# Build the model
###############################################################################
learning_rate = args.lr

ntokens = len(Corpus_Dic)
model = model.RNNModel(args.model, ntokens, args.emsize, args.nhid,
                       args.nlayers, args.dropout_em, args.dropout_rnn,
                       args.dropout_cl, args.tied).to(device)

criterion = nn.CrossEntropyLoss(reduction='none')
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate, momentum=0.9)
scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                            step_size=5,
                                            gamma=args.reduce_rate)

###############################################################################
# Training code
###############################################################################


def train():
    # Turn on training mode which enables dropout.