|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
import torch
|
|
import torch.nn as nn
|
|
|
|
|
|
class MyCaption(nn.Module):
|
|
def __init__(self):
|
|
super(MyCaption, self).__init__()
|
|
self.mode = None
|
|
|
|
def forward(self, *args, **kwargs):
|
|
mode = kwargs.get('mode', 'forward')
|
|
if 'mode' in kwargs:
|
|
del kwargs['mode']
|
|
return getattr(self, '_' + mode)(*args, **kwargs)
|
|
|
|
def sample_next_word(self, logprobs):
|
|
sampleLogprobs, it = torch.max(logprobs.data, 1)
|
|
it = it.view(-1).long()
|
|
return it, sampleLogprobs
|
|
|