Пример #1
0
    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]]) \
Пример #2
0
    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']
Пример #3
0
    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
Пример #4
0
    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')
Пример #5
0
    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']