def build(self):
# correct word probability (b,1)
c_o_t = T.exp(T.sum(self.W[self.y]*self.x,axis=-1) + self.b[self.y])
# negative word probability (b,k)
n_o_t = T.exp(T.sum(self.W[self.y_neg]*self.x.dimshuffle(0,'x',1),axis=-1)+ self.b[self.y_neg])
# positive probability
c_o_p = c_o_t / (c_o_t + self.k * self.q_w[self.y])
# negative probability (k,1)
n_o_p = self.q_w[self.y_neg] / (n_o_t + self.k * self.q_w[self.y_neg])
# cost for each y in nce
self.activation = -T.sum((T.log(c_o_p) + T.sum(T.log(n_o_p),axis=-1))*self.y_mask)/(T.sum(self.y_mask)*(self.k+1))
self.probability = T.nnet.softmax(T.dot(self.x,self.W.T) + self.b)
self.predict = T.argmax(self.probability, axis=-1)
评论列表
文章目录