def flatten(self, vars=None): """Flattens model's input and returns: FlatView with * input vector variable * replacements `input_var -> vars` * view {variable: VarMap} Parameters ---------- vars : list of variables or None if None, then all model.free_RVs are used for flattening input Returns ------- flat_view """ if vars is None: vars = self.free_RVs order = ArrayOrdering(vars) inputvar = tt.vector('flat_view', dtype=theano.config.floatX) inputvar.tag.test_value = flatten_list(vars).tag.test_value replacements = { self.named_vars[name]: inputvar[slc].reshape(shape).astype(dtype) for name, slc, shape, dtype in order.vmap } view = {vm.var: vm for vm in order.vmap} flat_view = FlatView(inputvar, replacements, view) return flat_view
def flatten(self, vars=None, order=None, inputvar=None): """Flattens model's input and returns: FlatView with * input vector variable * replacements ``input_var -> vars`` * view `{variable: VarMap}` Parameters ---------- vars : list of variables or None if None, then all model.free_RVs are used for flattening input order : ArrayOrdering Optional, use predefined ordering inputvar : tt.vector Optional, use predefined inputvar Returns ------- flat_view """ if vars is None: vars = self.free_RVs if order is None: order = ArrayOrdering(vars) if inputvar is None: inputvar = tt.vector('flat_view', dtype=theano.config.floatX) if theano.config.compute_test_value != 'off': if vars: inputvar.tag.test_value = flatten_list(vars).tag.test_value else: inputvar.tag.test_value = np.asarray([], inputvar.dtype) replacements = {self.named_vars[name]: inputvar[slc].reshape(shape).astype(dtype) for name, slc, shape, dtype in order.vmap} view = {vm.var: vm for vm in order.vmap} flat_view = FlatView(inputvar, replacements, view) return flat_view