def __init__(self, model): self.model = model self.dropout = 1.0 self.global_step = tf.Variable(0, name='global_step', trainable=False) self.input = dataset.Batch( tf.placeholder(tf.int32, shape=[None, 366, 100, 3]), tf.placeholder(tf.int32, shape=[None, self.model.data.token_sequence_length])) self.feature_embedding self.targets self.convolution self.decoder self.logits self.loss self.accuracy self.optimize
def __init__(self, model): self.model = model self.dropout = tf.placeholder(tf.float32, shape=[]) self.sparsity_adjustment = 0.9 self.total_loss_ratio = 0.5 # portion of loss coming from autoencoder self.global_step = tf.Variable(0, name='global_step', trainable=False) self.input = dataset.Batch( tf.placeholder(tf.int32, shape=[None, 366, 100, 3]), tf.placeholder(tf.int32, shape=[None, self.model.data.token_sequence_length])) self.feature_embedding self.targets self.convolution # self.autoencoder # self.autoencoder_loss self.encoded self.decoder self.logits self.loss # self.total_loss self.accuracy self.optimize
def test_incremental(): from common import config import model from utils import get_batch net, _ = model.get() net.eval() ckpt = torch.load("checkpoints/checkpoint_best_ppl.pth", map_location='cpu') # reload model parameters s_dict = {} for k in ckpt["net"]: new_k = k[7:] s_dict[new_k] = ckpt["net"][k] net.load_state_dict(s_dict) import dataset train_iter, _, SRC_TEXT, TGT_TEXT = dataset.get() #data_iter = iter(train_iter.get_iterator(True, True)) #raw_batch = next(data_iter) src = np.arange(4, 4+2000).reshape(80, 25) tgt = np.arange(4, 4+2400).reshape(80, 30) raw_batch = dataset.Batch( torch.from_numpy(src).long(), torch.from_numpy(tgt).long() ) batch = get_batch( raw_batch.src, raw_batch.tgt, SRC_TEXT.vocab, TGT_TEXT.vocab ) for k, v in batch.items(): try: print(k, v.size()) except AttributeError: pass with torch.no_grad(): enc_out = net.encode(src=batch['src'], src_mask=batch['src_mask']) # No incremental logits1 = net.decode(enc_out, batch['src_mask'], batch['tgt'], batch['tgt_mask']) logits1 = net.generator(logits1, log_prob=True) # Incremental print("Incremental encoding finished!") tlen = batch['tgt'].size(1) cache = {'cur_len':0} logits2 = [] for i in range(tlen): x = batch['tgt'][:, i].unsqueeze(-1) logit = net.decode( enc_out, batch['src_mask'], x, batch['tgt_mask'][:, i, :(i+1)].unsqueeze(-2), cache ) logit = net.generator(logit, log_prob=True) if i >= 0: ref = logits1[:, i, :] sys = logit.squeeze() ref_words = torch.topk(ref, 1)[1].squeeze() sys_words = torch.topk(sys, 1)[1].squeeze() print("Diff = {}".format(torch.sum(ref - sys).item())) print("Logits sys size : {}, Logits sys : {}".format(sys.size(), sys.sum().item())) print("Logits ref size : {}, Logits ref : {}".format(ref.size(), ref.sum().item())) if (ref_words == sys_words).all() == False: print("F**k!") print("\n") logits2.append(logit) cache['cur_len'] = i + 1 logits2 = torch.cat(logits2, dim=1).contiguous() print("Logits1: {}".format(torch.sum(logits1).item())) print("Logits2: {}".format(torch.sum(logits2).item()))