def __init__(self, params): self.parent = super(Questioner, self) # input-output for current bot params['inVocabSize'] = params['qInVocab'] params['outVocabSize'] = params['qOutVocab'] self.parent.__init__(params) # always condition on task #self.rnn = nn.LSTMCell(2*self.embedSize, self.hiddenSize) self.rnn = nn.LSTMCell(self.embedSize, self.hiddenSize) # additional prediction network # start token included numPreds = sum([len(ii) for ii in self.props.values()]) # network for predicting # embedsize *2 because we embed the two components separately self.predictRNN = nn.LSTMCell(self.embedSize * 2, self.hiddenSize) self.predictNet = nn.Linear(self.hiddenSize, numPreds) initializeWeights([self.predictNet, self.predictRNN, self.rnn], 'xavier') # setting offset self.taskOffset = params['aOutVocab'] + params['qOutVocab'] self.listenOffset = params['aOutVocab'] self.tasklist_per_component = torch.LongTensor([[0, 1], [0, 2], [0, 3], \ [1, 0], [1, 2], [1, 3], \ [2, 0], [2, 1], [2, 3], \ [3, 0], [3, 1], [3, 2]]) \
def __init__(self, params): self.parent = super(Questioner, self) # input-output for current bot params['inVocabSize'] = params['qInVocab'] if params['overhear']: params['inVocabSize'] += params['aOutVocab'] if params['overhearTask']: params['inVocabSize'] += params['numTasks'] params['outVocabSize'] = params['qOutVocab'] self.parent.__init__(params) # always condition on task #self.rnn = nn.LSTMCell(2*self.embedSize, self.hiddenSize); self.rnn = nn.LSTMCell(self.embedSize, self.hiddenSize) # additional prediction network # start token included numPreds = sum([len(ii) for ii in self.props.values()]) # network for predicting self.predictRNN = nn.LSTMCell(self.embedSize, self.hiddenSize) self.predictNet = nn.Linear(self.hiddenSize, numPreds) initializeWeights([self.predictNet, self.predictRNN, self.rnn], 'xavier') # setting offset # aOut | qOut | tasks | none | noneTask | aOut | tasks self.listenOffset = params['aOutVocab'] self.taskOffset = params['aOutVocab'] + params['qOutVocab'] self.noneToken = self.taskOffset + params['numTasks'] self.noneTaskToken = self.noneToken + 1 self.overhearOffset = self.noneTaskToken + 1 self.overhearTaskOffset = params['numTasks'] + 2 + params['aOutVocab']
def __init__(self, params): self.parent = super(Answerer, self) # input-output for current bot params['inVocabSize'] = params['aInVocab'] if params['overhear']: params['inVocabSize'] += params['qOutVocab'] params['outVocabSize'] = params['aOutVocab'] self.parent.__init__(params) # number of attribute values numAttrs = sum([len(ii) for ii in self.props.values()]) # number of unique attributes numUniqAttr = len(self.props) # rnn inputSize rnnInputSize = numUniqAttr * self.imgFeatSize + self.embedSize self.imgNet = nn.Embedding(numAttrs, self.imgFeatSize) self.rnn = nn.LSTMCell(rnnInputSize, self.hiddenSize) initializeWeights([self.rnn, self.imgNet], 'xavier') # set offset self.listenOffset = params['qOutVocab'] self.noneToken = self.listenOffset + params['aOutVocab'] self.overhearOffset = self.noneToken + 1
def __init__(self, params): super(ChatBot, self).__init__() # absorb all parameters to self for attr in params: setattr(self, attr, params[attr]) # standard initializations self.hState = torch.Tensor() self.cState = torch.Tensor() self.actions = [] self.evalFlag = False # modules (common) self.inNet = nn.Embedding(self.inVocabSize, self.embedSize) self.outNet = nn.Linear(self.hiddenSize, self.outVocabSize) # initialize weights initializeWeights([self.inNet, self.outNet], 'xavier')
def __init__(self, params): self.parent = super(Questioner, self) # input-output for current bot params['inVocabSize'] = params['qInVocab'] params['outVocabSize'] = params['qOutVocab'] self.parent.__init__(params) self.bot_name = 'qbot' # always condition on task #self.rnn = nn.LSTMCell(2*self.embedSize, self.hiddenSize); self.rnn = nn.LSTMCell(self.embedSize, self.hiddenSize) # additional prediction network # start token included numPreds = sum([len(ii) for ii in self.props.values()]) # network for predicting self.predictRNN = nn.LSTMCell(self.embedSize, self.hiddenSize) self.predictNet = nn.Linear(self.hiddenSize, numPreds) initializeWeights([self.predictNet, self.predictRNN, self.rnn], 'xavier') # setting offset self.taskOffset = params['aOutVocab'] + params['qOutVocab'] self.listenOffset = params['aOutVocab']