def define_loss(self):
#Inverse since those that have a smaller distance are the most probable.
self.pred_func = TT.nnet.sigmoid( TT.sum(self.e1[self.rows,:] * self.r1[self.cols,:] * self.e1[self.tubes,:], 1) \
+ TT.sum(self.e2[self.rows,:] * self.r1[self.cols,:] * self.e2[self.tubes,:], 1) \
+ TT.sum(self.e1[self.rows,:] * self.r2[self.cols,:] * self.e2[self.tubes,:], 1) \
- TT.sum(self.e2[self.rows,:] * self.r2[self.cols,:] * self.e1[self.tubes,:], 1) )
self.loss = TT.nnet.softplus( - self.ys * ( TT.sum(self.e1[self.rows,:] * self.r1[self.cols,:] * self.e1[self.tubes,:], 1) \
+ TT.sum(self.e2[self.rows,:] * self.r1[self.cols,:] * self.e2[self.tubes,:], 1) \
+ TT.sum(self.e1[self.rows,:] * self.r2[self.cols,:] * self.e2[self.tubes,:], 1) \
- TT.sum(self.e2[self.rows,:] * self.r2[self.cols,:] * self.e1[self.tubes,:], 1) )).mean()
self.regul_func = TT.sqr(self.e1[self.rows,:]).mean() \
+ TT.sqr(self.e2[self.rows,:]).mean() \
+ TT.sqr(self.e1[self.tubes,:]).mean() \
+ TT.sqr(self.e2[self.tubes,:]).mean() \
+ TT.sqr(self.r1[self.cols,:]).mean() \
+ TT.sqr(self.r2[self.cols,:]).mean()
评论列表
文章目录