Ejemplo n.º 1
0
 def test_allocdiag_opt(self):
     x = tensor.vector()
     fn = theano.function([x], tensor.AllocDiag()(x), mode=mode_with_gpu)
     assert any([
         isinstance(node.op, GpuAllocDiag)
         for node in fn.maker.fgraph.toposort()
     ])
Ejemplo n.º 2
0
def hky_transition_probs_vec(kappa, pi, t):
	U, lambd, Vt = hky_eigendecomposition(kappa, pi)

	diag = tt.AllocDiag(axis1=1, axis2=2)(tt.exp(tt.outer(t, lambd))) #[len(t), 4, 4]

	U_expanded = U.dimshuffle('x', 0, 1, 'x')
	diag_expanded = diag.dimshuffle(0, 'x', 1, 2)

	U_dot_diag = (U_expanded * diag_expanded).sum(axis=2) #[len(t), 4, 4]

	U_dot_diag_expanded = U_dot_diag.dimshuffle(0, 1, 2, 'x')	
	Vt_expanded = Vt.dimshuffle('x', 'x', 0, 1)

	return (U_dot_diag_expanded * Vt_expanded).sum(axis=2)
Ejemplo n.º 3
0
def hky_transition_probs_mat(kappa, pi, t):
	U, lambd, Vt = hky_eigendecomposition(kappa, pi)

	lambd_expanded = lambd.dimshuffle('x', 'x', 0)
	t_expanded = t.dimshuffle(0, 1, 'x')

	diag = tt.AllocDiag(axis1=2, axis2=3)(tt.exp(t_expanded * lambd_expanded)) #[t.shape, 4, 4]

	U_expanded = U.dimshuffle('x', 'x', 0, 1, 'x')
	diag_expanded = diag.dimshuffle(0, 1, 'x', 2, 3)

	U_dot_diag = (U_expanded * diag_expanded).sum(axis=3) #[t.shape, 4, 4]

	U_dot_diag_expanded = U_dot_diag.dimshuffle(0, 1, 2, 3, 'x')	
	Vt_expanded = Vt.dimshuffle('x', 'x', 'x', 0, 1)

	return (U_dot_diag_expanded * Vt_expanded).sum(axis=3)