Python autograd.numpy.tile() Examples
The following are 18
code examples of autograd.numpy.tile().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
autograd.numpy
, or try the search function
.
Example #1
Source File: autograd_wrapper.py From mici with MIT License | 6 votes |
def jacobian_and_value(fun, x): """ Makes a function that returns both the Jacobian and value of a function. Assumes that the function `fun` broadcasts along the first dimension of the input being differentiated with respect to such that a batch of outputs can be computed concurrently for a batch of inputs. """ val = fun(x) v_vspace = vspace(val) x_vspace = vspace(x) x_rep = np.tile(x, (v_vspace.size,) + (1,) * x_vspace.ndim) vjp_rep, _ = make_vjp(fun, x_rep) jacobian_shape = v_vspace.shape + x_vspace.shape basis_vectors = np.array([b for b in v_vspace.standard_basis()]) jacobian = vjp_rep(basis_vectors) return np.reshape(jacobian, jacobian_shape), val
Example #2
Source File: tm.py From autohmm with BSD 2-Clause "Simplified" License | 6 votes |
def _set_transmat(self, transmat_val): if transmat_val is None: transmat = np.tile(1.0 / self.n_components, (self.n_components, self.n_components)) else: transmat_val[np.isnan(transmat_val)] = 0.0 normalize(transmat_val, axis=1) if (np.asarray(transmat_val).shape == (self.n_components, self.n_components)): transmat = np.copy(transmat_val) elif transmat_val.shape[0] == self.n_unique: transmat = self._ntied_transmat(transmat_val) else: raise ValueError("cannot match shape of transmat") if not np.all(np.allclose(np.sum(transmat, axis=1), 1.0)): raise ValueError('Rows of transmat must sum to 1.0') self._log_transmat = np.log(np.asarray(transmat).copy()) underflow_idx = np.isnan(self._log_transmat) self._log_transmat[underflow_idx] = NEGINF
Example #3
Source File: tm.py From autohmm with BSD 2-Clause "Simplified" License | 6 votes |
def _set_startprob(self, startprob): if startprob is None: startprob = np.tile(1.0 / self.n_components, self.n_components) else: startprob = np.asarray(startprob, dtype=np.float) normalize(startprob) if len(startprob) != self.n_components: if len(startprob) == self.n_unique: startprob_split = np.copy(startprob) / (1.0+self.n_tied) startprob = np.zeros(self.n_components) for u in range(self.n_unique): for t in range(self.n_chain): startprob[u*(self.n_chain)+t] = \ startprob_split[u].copy() else: raise ValueError("cannot match shape of startprob") if not np.allclose(np.sum(startprob), 1.0): raise ValueError('startprob must sum to 1.0') self._log_startprob = np.log(np.asarray(startprob).copy())
Example #4
Source File: tm.py From autohmm with BSD 2-Clause "Simplified" License | 6 votes |
def _set_precision_prior(self, precision_prior): if precision_prior is None: self._precision_prior_ = \ np.zeros((self.n_components, self.n_features, self.n_features)) else: precision_prior = np.asarray(precision_prior) if len(precision_prior) == 1: self._precision_prior_ = np.tile(precision_prior, (self.n_components, self.n_features, self.n_features)) elif \ (precision_prior.reshape(self.n_unique, self.n_features, self.n_features)).shape \ == (self.n_unique, self.n_features, self.n_features): self._precision_prior_ = \ np.zeros((self.n_components, self.n_features, self.n_features)) for u in range(self.n_unique): for t in range(self.n_chain): self._precision_prior_[u*(self.n_chain)+t] = precision_prior[u].copy() else: raise ValueError("cannot match shape of precision_prior")
Example #5
Source File: kernel.py From kernel-gof with MIT License | 6 votes |
def gradXY_sum(self, X, Y): r""" Compute \sum_{i=1}^d \frac{\partial^2 k(x, Y)}{\partial x_i \partial y_i} evaluated at each x_i in X, and y_i in Y. X: nx x d numpy array. Y: ny x d numpy array. Return a nx x ny numpy array of the derivatives. """ gamma = 1/X.shape[1] if self.gamma is None else self.gamma if self.degree == 1: # optimization, other expression is valid too return np.tile(gamma, (X.shape[0], X.shape[1])) dot = np.dot(X, Y.T) inside = gamma * dot + self.coef0 to_dminus2 = inside ** (self.degree - 2) to_dminus1 = to_dminus2 * inside return ( (self.degree * (self.degree-1) * gamma**2) * to_dminus2 * dot + (X.shape[1] * gamma * self.degree) * to_dminus1 )
Example #6
Source File: util.py From kernel-gof with MIT License | 6 votes |
def outer_rows(X, Y): """ Compute the outer product of each row in X, and Y. X: n x dx numpy array Y: n x dy numpy array Return an n x dx x dy numpy array. """ # Matlab way to do this. According to Jonathan Huggins, this is not # efficient. Use einsum instead. See below. #n, dx = X.shape #dy = Y.shape[1] #X_col_rep = X[:, np.tile(range(dx), (dy, 1)).T.reshape(-1) ] #Y_tile = np.tile(Y, (1, dx)) #Z = X_col_rep*Y_tile #return np.reshape(Z, (n, dx, dy)) return np.einsum('ij,ik->ijk', X, Y)
Example #7
Source File: autograd_wrapper.py From mici with MIT License | 6 votes |
def hessian_grad_and_value(fun, x): """ Makes a function that returns the Hessian, gradient & value of a function. Assumes that the function `fun` broadcasts along the first dimension of the input being differentiated with respect to such that a batch of outputs can be computed concurrently for a batch of inputs. """ def grad_fun(x): vjp, val = make_vjp(fun, x) return vjp(vspace(val).ones()), val x_vspace = vspace(x) x_rep = np.tile(x, (x_vspace.size,) + (1,) * x_vspace.ndim) vjp_grad, (grad, val) = make_vjp(lambda x: atuple(grad_fun(x)), x_rep) hessian_shape = x_vspace.shape + x_vspace.shape basis_vectors = np.array([b for b in x_vspace.standard_basis()]) hessian = vjp_grad((basis_vectors, vspace(val).zeros())) return np.reshape(hessian, hessian_shape), grad[0], val[0]
Example #8
Source File: transitions.py From recurrent-slds with MIT License | 5 votes |
def expected_logpi_logpiT(self): return np.tile(self.expected_bsq[:,None,None], (1, self.num_states, self.num_states))
Example #9
Source File: test_systematic.py From autograd with MIT License | 5 votes |
def test_tile(): combo_check(np.tile, [0])([R(2,1,3,1)], reps=[(1, 4, 1, 2)]) combo_check(np.tile, [0])([R(1,2)], reps=[(1,2), (2,3), (3,2,1)]) combo_check(np.tile, [0])([R(1)], reps=[(2,), 2])
Example #10
Source File: cdtlz.py From pymoo with Apache License 2.0 | 5 votes |
def _calc_pareto_front(self, ref_dirs, *args, **kwargs): F = super()._calc_pareto_front(ref_dirs, *args, **kwargs) a = anp.sqrt(anp.sum(F ** 2, 1) - 3 / 4 * anp.max(F ** 2, axis=1)) a = anp.expand_dims(a, axis=1) a = anp.tile(a, [1, ref_dirs.shape[1]]) F = F / a return F
Example #11
Source File: transitions.py From recurrent-slds with MIT License | 5 votes |
def expected_logpi_WT(self): return np.tile(self.expected_bWT[:,None,:], (1, self.num_states, 1))
Example #12
Source File: transitions.py From recurrent-slds with MIT License | 5 votes |
def expected_logpi(self): return np.tile(self.expected_b[None,:], (self.num_states, 1))
Example #13
Source File: transitions.py From recurrent-slds with MIT License | 5 votes |
def resample(self, stateseqs=None, covseqs=None, n_steps=10, step_sz=0.01, **kwargs): K, D = self.num_states, self.covariate_dim # Run HMC from hips.inference.hmc import hmc def hmc_objective(params): # Unpack params assert params.size == K + K * D assert params.ndim == 1 b = params[:K] logpi = anp.tile(b[None, :], (K, 1)) W = params[K:].reshape((D, K)) return self.joint_log_probability(logpi, W, stateseqs, covseqs) # hmc_objective = lambda params: self.joint_log_probability(params, stateseqs, covseqs) grad_hmc_objective = grad(hmc_objective) x0 = np.concatenate((self.b, np.ravel(self.W))) xf, self.step_sz, self.accept_rate = \ hmc(hmc_objective, grad_hmc_objective, step_sz=self.step_sz, n_steps=n_steps, q_curr=x0, negative_log_prob=False, adaptive_step_sz=True, avg_accept_rate=self.accept_rate) self.b = xf[:K] self.W = xf[K:].reshape((D, K)) ### EM
Example #14
Source File: cdtlz.py From pymop with Apache License 2.0 | 5 votes |
def _calc_pareto_front(self, ref_dirs, *args, **kwargs): F = super()._calc_pareto_front(ref_dirs, *args, **kwargs) a = anp.sqrt(anp.sum(F ** 2, 1) - 3 / 4 * anp.max(F ** 2, axis=1)) a = anp.expand_dims(a, axis=1) a = anp.tile(a, [1, ref_dirs.shape[1]]) F = F / a return F
Example #15
Source File: dtlz.py From pymop with Apache License 2.0 | 5 votes |
def generic_sphere(ref_dirs): return ref_dirs / anp.tile(anp.linalg.norm(ref_dirs, axis=1)[:, None], (1, ref_dirs.shape[1]))
Example #16
Source File: transitions.py From recurrent-slds with MIT License | 5 votes |
def b(self, value): assert value.shape == (self.num_states,) self.logpi = np.tile(value[None, :], (self.num_states, 1))
Example #17
Source File: dtlz.py From pymoo with Apache License 2.0 | 5 votes |
def generic_sphere(ref_dirs): return ref_dirs / anp.tile(anp.linalg.norm(ref_dirs, axis=1)[:, None], (1, ref_dirs.shape[1]))
Example #18
Source File: demography.py From momi2 with GNU General Public License v3.0 | 4 votes |
def admixture_operator(n_node, p): # axis0=n_from_parent, axis1=der_from_parent, axis2=der_in_parent der_in_parent = np.tile(np.arange(n_node + 1), (n_node + 1, n_node + 1, 1)) n_from_parent = np.transpose(der_in_parent, [2, 0, 1]) der_from_parent = np.transpose(der_in_parent, [0, 2, 1]) anc_in_parent = n_node - der_in_parent anc_from_parent = n_from_parent - der_from_parent x = comb(der_in_parent, der_from_parent) * comb( anc_in_parent, anc_from_parent) / comb(n_node, n_from_parent) # rearrange so axis0=1, axis1=der_in_parent, axis2=der_from_parent, axis3=n_from_parent x = np.transpose(x) x = np.reshape(x, [1] + list(x.shape)) n = np.arange(n_node+1) B = comb(n_node, n) # the two arrays to convolve_sum_axes x1 = (x * B * ((1-p)**n) * (p**(n[::-1]))) x2 = x[:, :, :, ::-1] # reduce array size; approximate low probability events with 0 mu = n_node * (1-p) sigma = np.sqrt(n_node * p * (1-p)) n_sd = 4 lower = np.max((0, np.floor(mu - n_sd*sigma))) upper = np.min((n_node, np.ceil(mu + n_sd*sigma))) + 1 lower, upper = int(lower), int(upper) ##x1 = x1[:,:,:upper,lower:upper] ##x2 = x2[:,:,:(n_node-lower+1),lower:upper] ret = convolve_sum_axes(x1, x2) # axis0=der_in_parent1, axis1=der_in_parent2, axis2=der_in_child ret = np.reshape(ret, ret.shape[1:]) if ret.shape[2] < (n_node+1): ret = np.pad(ret, [(0,0),(0,0),(0,n_node+1-ret.shape[2])], "constant") return ret[:, :, :(n_node+1)] #@memoize #def _der_in_admixture_node(n_node): # ''' # returns 4d-array, [n_from_parent1, der_in_child, der_in_parent1, der_in_parent2]. # Used by Demography._admixture_prob_helper # ''' # # axis0=n_from_parent, axis1=der_from_parent, axis2=der_in_parent # der_in_parent = np.tile(np.arange(n_node + 1), (n_node + 1, n_node + 1, 1)) # n_from_parent = np.transpose(der_in_parent, [2, 0, 1]) # der_from_parent = np.transpose(der_in_parent, [0, 2, 1]) # # anc_in_parent = n_node - der_in_parent # anc_from_parent = n_from_parent - der_from_parent # # x = scipy.special.comb(der_in_parent, der_from_parent) * scipy.special.comb( # anc_in_parent, anc_from_parent) / scipy.special.comb(n_node, n_from_parent) # # ret, labels = convolve_axes( # x, x[::-1, ...], [[c for c in 'ijk'], [c for c in 'ilm']], ['j', 'l'], 'n') # return np.einsum('%s->inkm' % ''.join(labels), ret[..., :(n_node + 1)])