def updateGamma(self):
task_matrices = np.zeros((self.n_tasks, self.num_feats, self.num_feats))
for m in range(self.n_tasks):
rho_vector = rhoFunction(np.array(self.xi[m]))
rho_vector = rho_vector.reshape((1,-1)) # Make rho vector 2D
task_X = self.task_dict[m]['X']
# Note that the transposing doesn't exactly match the paper because our data format is slightly different
rho_matrix = abs(rho_vector) * task_X.T
task_matrices[m,:,:] = np.dot(rho_matrix, task_X)
for k in range(self.K):
inner_sum = np.zeros((self.num_feats,self.num_feats))
for m in range(self.n_tasks):
inner_sum = inner_sum + self.phi[m,k] * task_matrices[m,:,:]
self.gamma[k] = la.inv(la.inv(self.sigma) + 2*inner_sum)
if self.debug:
print "gamma computation {0}".format(k), la.det(la.inv(self.sigma) + 2*inner_sum)
评论列表
文章目录