mirror of
https://github.com/wassname/Castor.git
synced 2026-09-09 11:13:20 +08:00
merged changes
This commit is contained in:
+3
-3
@@ -59,7 +59,7 @@ class QAModel(nn.Module):
|
||||
q = self.conv_q.forward(question)
|
||||
q = F.max_pool1d(q, q.size()[2])
|
||||
q = q.view(-1, self.conv_channels)
|
||||
logger.debug('forward q: {}'.format(q))
|
||||
# logger.debug('forward q: {}'.format(q))
|
||||
|
||||
a = self.conv_a.forward(answer)
|
||||
a = F.max_pool1d(a, a.size()[2])
|
||||
@@ -68,10 +68,10 @@ class QAModel(nn.Module):
|
||||
x = None
|
||||
if self.no_ext_feats:
|
||||
x = torch.cat([q, a], 1)
|
||||
logger.debug('no_ext_feats')
|
||||
# logger.debug('no_ext_feats')
|
||||
else:
|
||||
x = torch.cat([q, a, ext_feats], 1)
|
||||
logger.debug('with ext_feats')
|
||||
# logger.debug('with ext_feats')
|
||||
|
||||
logger.debug('featvec x: {}'.format(x))
|
||||
# logger.debug(x.creator)
|
||||
|
||||
+9
-15
@@ -58,11 +58,8 @@ class Trainer(object):
|
||||
|
||||
self.optimizer.zero_grad()
|
||||
output = self.model(xq, xa, ext_feats)
|
||||
|
||||
# output = torch.exp(output)
|
||||
|
||||
loss = self.criterion(output, ys)
|
||||
logger.debug('loss after criterion {}'.format(loss))
|
||||
# logger.debug('loss after criterion {}'.format(loss))
|
||||
|
||||
# NOTE: regularizing location 1
|
||||
# if not self.no_loss_reg:
|
||||
@@ -71,20 +68,20 @@ class Trainer(object):
|
||||
|
||||
loss.backward()
|
||||
|
||||
logger.debug('AFTER backward')
|
||||
# logger.debug('AFTER backward')
|
||||
#logger.debug('params {}'.format([p for p in self.model.parameters()]))
|
||||
logger.debug('params grads {}'.format([p.grad for p in self.model.parameters()]))
|
||||
# logger.debug('params grads {}'.format([p.grad for p in self.model.parameters()]))
|
||||
|
||||
# NOTE: regularizing location 2. It would seem that location 1 is correct?
|
||||
if not self.no_loss_reg:
|
||||
loss = self.regularize_loss(loss)
|
||||
logger.debug('loss after regularizing {}'.format(loss))
|
||||
# logger.debug('loss after regularizing {}'.format(loss))
|
||||
|
||||
self.optimizer.step()
|
||||
|
||||
logger.debug('AFTER step')
|
||||
# logger.debug('AFTER step')
|
||||
#logger.debug('params {}'.format([p for p in self.model.parameters()]))
|
||||
logger.debug('params grads {}'.format([p.grad for p in self.model.parameters()]))
|
||||
# logger.debug('params grads {}'.format([p.grad for p in self.model.parameters()]))
|
||||
|
||||
return loss.data[0], self.pred_equals_y(output, ys)
|
||||
|
||||
@@ -134,17 +131,15 @@ class Trainer(object):
|
||||
xq, xa, x_ext_feats = batch_inputs[0]
|
||||
y = batch_labels[0]
|
||||
|
||||
pred = self.model(xq, xa, x_ext_feats)
|
||||
pred = self.model(xq, xa, x_ext_feats)
|
||||
loss = self.criterion(pred, y)
|
||||
pred = torch.exp(pred)
|
||||
total_loss += loss
|
||||
total_correct += self.pred_equals_y(pred, y)
|
||||
|
||||
p_score, p_class = pred.max(1)
|
||||
y_pred[ypc] = p_score.data.squeeze()[0]
|
||||
y_pred[ypc] = pred.data.squeeze()[1] # we want to score for relevance, NOT the predicted class
|
||||
ypc += 1
|
||||
|
||||
|
||||
logger.info('{}_correct {}'.format(set_folder, total_correct))
|
||||
logger.info('{}_loss {}'.format(set_folder, total_loss.data[0]))
|
||||
logger.info('{} total {}'.format(set_folder, len(labels)))
|
||||
@@ -229,8 +224,7 @@ class Trainer(object):
|
||||
tensorized_inputs = []
|
||||
for i in xrange(len(batch_ques)):
|
||||
xq = Variable(self.make_input_matrix(batch_ques[i], word_vectors, vec_dim) ) #, requires_grad=False)
|
||||
xs = Variable(self.make_input_matrix(batch_sents[i], word_vectors, vec_dim) ) #, requires_grad=False)
|
||||
# ext_feats = Variable(torch.FloatTensor(batch_ext_feats[i]))
|
||||
xs = Variable(self.make_input_matrix(batch_sents[i], word_vectors, vec_dim) ) #, requires_grad=False)
|
||||
ext_feats = Variable(torch.FloatTensor(batch_ext_feats[i]))
|
||||
ext_feats =torch.unsqueeze(ext_feats, 0)
|
||||
y[i] = batch_labels[i]
|
||||
|
||||
Reference in New Issue
Block a user