Python theano.tensor.TensorVariable() Examples
The following are 30
code examples of theano.tensor.TensorVariable().
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
theano.tensor
, or try the search function
.
Example #1
Source File: blocks_utils.py From Attentive_reader with BSD 3-Clause "New" or "Revised" License | 6 votes |
def shared_like(variable, name=None): """Construct a shared variable to hold the value of a tensor variable. Parameters ---------- variable : :class:`~tensor.TensorVariable` The variable whose dtype and ndim will be used to construct the new shared variable. name : :obj:`str` or :obj:`None` The name of the shared variable. If None, the name is determined based on variable's name. """ variable = tensor.as_tensor_variable(variable) if name is None: name = "shared_{}".format(variable.name) return theano.shared(numpy.zeros((0,) * variable.ndim, dtype=variable.dtype), name=name)
Example #2
Source File: cost.py From kusanagi with MIT License | 6 votes |
def build_loss_func(loss, uncertain_inputs=False, name='loss_fn', *args, **kwargs): ''' Utility function to compiling a theano graph corresponding to a loss function ''' mx = tt.vector('mx') if uncertain_inputs else tt.matrix('mx') Sx = tt.matrix('Sx') if uncertain_inputs else None inputs = [mx, Sx] if uncertain_inputs else [mx] # add extra input variables inputs += [a for a in args if type(a) is theano.tensor.TensorVariable and len(a.get_parents()) == 0] inputs += [k for k in kwargs.values() if type(k) is theano.tensor.TensorVariable and len(k.get_parents()) == 0] outputs = loss(mx, Sx, *args, **kwargs) return theano.function(inputs, outputs, name=name, allow_input_downcast=True)
Example #3
Source File: layers.py From reseg with GNU General Public License v3.0 | 6 votes |
def get_output_shape_for(self, input_shape, **kwargs): # self.crop is a tensor --> we cannot know in advance how much # we will crop if isinstance(self.crop, T.TensorVariable): if self.data_format == 'bc01': input_shape = list(input_shape) input_shape[2] = None input_shape[3] = None else: input_shape = list(input_shape) input_shape[1] = None input_shape[2] = None # self.crop is a list of ints else: if self.data_format == 'bc01': input_shape = list(input_shape) input_shape[2] -= self.crop[0] input_shape[3] -= self.crop[1] else: input_shape = list(input_shape) input_shape[1] -= self.crop[0] input_shape[2] -= self.crop[1] return input_shape
Example #4
Source File: cost.py From kusanagi with MIT License | 6 votes |
def build_distance_based_cost(uncertain_inputs=False, name='loss_fn', *args, **kwargs): ''' Utility function to compiling a theano graph corresponding to a loss function ''' mx = tt.vector('mx') if uncertain_inputs else tt.matrix('mx') Sx = tt.matrix('Sx') if uncertain_inputs else None Q = kwargs.pop('Q', tt.matrix('Q')) target = kwargs.pop('target', tt.vector('target')) angi = kwargs.pop('angle_dims', []) inputs = [mx, Sx] if uncertain_inputs else [mx] if type(target) is tt.TensorVariable and len(target.get_parents()) == 0: inputs += [target] if type(Q) is tt.TensorVariable and len(Q.get_parents()) == 0: inputs += [Q] if type(angi) is tt.TensorVariable and len(angi.get_parents()) == 0: inputs += [angi] outputs = distance_based_cost(mx, Sx, target=target, Q=Q, angle_dims=angi, *args, **kwargs) return theano.function(inputs, outputs, name=name, allow_input_downcast=True)
Example #5
Source File: __init__.py From attention-lvcsr with MIT License | 6 votes |
def shared_like(variable, name=None, **kwargs): r"""Construct a shared variable to hold the value of a tensor variable. Parameters ---------- variable : :class:`~tensor.TensorVariable` The variable whose dtype and ndim will be used to construct the new shared variable. name : :obj:`str` or :obj:`None` The name of the shared variable. If None, the name is determined based on variable's name. \*\*kwargs Keyword arguments to pass to the :func:`~theano.shared` function. """ variable = tensor.as_tensor_variable(variable) if name is None: name = "shared_{}".format(variable.name) return theano.shared(numpy.zeros((0,) * variable.ndim, dtype=variable.dtype), name=name, **kwargs)
Example #6
Source File: test_basic.py From attention-lvcsr with MIT License | 6 votes |
def test_sanity_check_slice(self): mySymbolicMatricesList = TypedListType(T.TensorType( theano.config.floatX, (False, False)))() mySymbolicSlice = SliceType()() z = GetItem()(mySymbolicMatricesList, mySymbolicSlice) self.assertFalse(isinstance(z, T.TensorVariable)) f = theano.function([mySymbolicMatricesList, mySymbolicSlice], z) x = rand_ranged_matrix(-1000, 1000, [100, 101]) self.assertTrue(numpy.array_equal(f([x], slice(0, 1, 1)), [x]))
Example #7
Source File: basic.py From attention-lvcsr with MIT License | 6 votes |
def make_node(self, x, index): assert isinstance(x.type, TypedListType) if not isinstance(index, Variable): if isinstance(index, slice): index = Constant(SliceType(), index) return Apply(self, [x, index], [x.type()]) else: index = T.constant(index, ndim=0, dtype='int64') return Apply(self, [x, index], [x.ttype()]) if isinstance(index.type, SliceType): return Apply(self, [x, index], [x.type()]) elif isinstance(index, T.TensorVariable) and index.ndim == 0: assert index.dtype == 'int64' return Apply(self, [x, index], [x.ttype()]) else: raise TypeError('Expected scalar or slice as index.')
Example #8
Source File: __init__.py From attention-lvcsr with MIT License | 6 votes |
def put_hook(variable, hook_fn, *args): r"""Put a hook on a Theano variables. Ensures that the hook function is executed every time when the value of the Theano variable is available. Parameters ---------- variable : :class:`~tensor.TensorVariable` The variable to put a hook on. hook_fn : function The hook function. Should take a single argument: the variable's value. \*args : list Positional arguments to pass to the hook function. """ return printing.Print(global_fn=lambda _, x: hook_fn(x, *args))(variable)
Example #9
Source File: simple.py From attention-lvcsr with MIT License | 6 votes |
def apply(self, input_): """Apply the linear transformation. Parameters ---------- input_ : :class:`~tensor.TensorVariable` The input on which to apply the transformation Returns ------- output : :class:`~tensor.TensorVariable` The transformed input plus optional bias """ output = tensor.dot(input_, self.W) if self.use_bias: output += self.b return output
Example #10
Source File: simple.py From attention-lvcsr with MIT License | 6 votes |
def apply(self, input_): """Apply the linear transformation. Parameters ---------- input_ : :class:`~tensor.TensorVariable` The input on which to apply the transformation Returns ------- output : :class:`~tensor.TensorVariable` The transformed input plus optional bias """ b, = self.parameters return input_ + b
Example #11
Source File: blocks_utils.py From Attentive_reader with BSD 3-Clause "New" or "Revised" License | 6 votes |
def is_graph_input(variable): """Check if variable is a user-provided graph input. To be considered an input the variable must have no owner, and not be a constant or shared variable. Parameters ---------- variable : :class:`~tensor.TensorVariable` Returns ------- bool ``True`` If the variable is a user-provided input to the graph. """ return (not variable.owner and not isinstance(variable, SharedVariable) and not isinstance(variable, Constant))
Example #12
Source File: simple.py From attention-lvcsr with MIT License | 6 votes |
def apply(self, input_): """Apply the linear transformation followed by maxout. Parameters ---------- input_ : :class:`~tensor.TensorVariable` The input on which to apply the transformations Returns ------- output : :class:`~tensor.TensorVariable` The transformed input """ pre_activation = self.linear.apply(input_) output = self.maxout.apply(pre_activation) return output
Example #13
Source File: basic.py From D-VAE with MIT License | 6 votes |
def make_node(self, x, index): assert isinstance(x.type, TypedListType) if not isinstance(index, Variable): if isinstance(index, slice): index = Constant(SliceType(), index) return Apply(self, [x, index], [x.type()]) else: index = T.constant(index, ndim=0, dtype='int64') return Apply(self, [x, index], [x.ttype()]) if isinstance(index.type, SliceType): return Apply(self, [x, index], [x.type()]) elif isinstance(index, T.TensorVariable) and index.ndim == 0: assert index.dtype == 'int64' return Apply(self, [x, index], [x.ttype()]) else: raise TypeError('Expected scalar or slice as index.')
Example #14
Source File: test_basic.py From D-VAE with MIT License | 6 votes |
def test_sanity_check_slice(self): mySymbolicMatricesList = TypedListType(T.TensorType( theano.config.floatX, (False, False)))() mySymbolicSlice = SliceType()() z = GetItem()(mySymbolicMatricesList, mySymbolicSlice) self.assertFalse(isinstance(z, T.TensorVariable)) f = theano.function([mySymbolicMatricesList, mySymbolicSlice], z) x = rand_ranged_matrix(-1000, 1000, [100, 101]) self.assertTrue(numpy.array_equal(f([x], slice(0, 1, 1)), [x]))
Example #15
Source File: theano_internal.py From spinn with MIT License | 6 votes |
def ensure_2d_arguments(f, squeeze_ret=True): """Decorator which ensures all of its function's arguments are 2D.""" @wraps(f) def wrapped(*args, **kwargs): new_args = [] for arg in args: if isinstance(arg, T.TensorVariable): if arg.ndim == 1: arg = arg.dimshuffle("x", 0) elif arg.ndim > 2: raise RuntimeError("ensure_2d_arguments wrapped a function" " which received an %i-d argument. " "Don't know what to do.") new_args.append(arg) ret = f(*new_args, **kwargs) if squeeze_ret: if isinstance(ret, (list, tuple)): ret = [ret_i.squeeze() for ret_i in ret] elif isinstance(ret, T.TensorVariable): ret = ret.squeeze() return ret return wrapped
Example #16
Source File: __init__.py From attention-lvcsr with MIT License | 6 votes |
def is_graph_input(variable): """Check if variable is a user-provided graph input. To be considered an input the variable must have no owner, and not be a constant or shared variable. Parameters ---------- variable : :class:`~tensor.TensorVariable` Returns ------- bool ``True`` If the variable is a user-provided input to the graph. """ return (not variable.owner and not isinstance(variable, SharedVariable) and not isinstance(variable, Constant))
Example #17
Source File: __init__.py From Attentive_reader with BSD 3-Clause "New" or "Revised" License | 5 votes |
def dbg_hook(hook, x): if not isinstance(x, TT.TensorVariable): x.out = theano.printing.Print(global_fn=hook)(x.out) return x else: return theano.printing.Print(global_fn=hook)(x)
Example #18
Source File: blocks_utils.py From Attentive_reader with BSD 3-Clause "New" or "Revised" License | 5 votes |
def check_theano_variable(variable, n_dim, dtype_prefix): """Check number of dimensions and dtype of a Theano variable. If the input is not a Theano variable, it is converted to one. `None` input is handled as a special case: no checks are done. Parameters ---------- variable : :class:`~tensor.TensorVariable` or convertible to one A variable to check. n_dim : int Expected number of dimensions or None. If None, no check is performed. dtype : str Expected dtype prefix or None. If None, no check is performed. """ if variable is None: return if not isinstance(variable, tensor.Variable): variable = tensor.as_tensor_variable(variable) if n_dim and variable.ndim != n_dim: raise ValueError("Wrong number of dimensions:" "\n\texpected {}, got {}".format( n_dim, variable.ndim)) if dtype_prefix and not variable.dtype.startswith(dtype_prefix): raise ValueError("Wrong dtype prefix:" "\n\texpected starting with {}, got {}".format( dtype_prefix, variable.dtype))
Example #19
Source File: utils.py From NMT-Coverage with BSD 3-Clause "New" or "Revised" License | 5 votes |
def dbg_hook(hook, x): if not isinstance(x, TT.TensorVariable): x.out = theano.printing.Print(global_fn=hook)(x.out) return x else: return theano.printing.Print(global_fn=hook)(x)
Example #20
Source File: utils.py From NMT-Coverage with BSD 3-Clause "New" or "Revised" License | 5 votes |
def dbg_hook(hook, x): if not isinstance(x, TT.TensorVariable): x.out = theano.printing.Print(global_fn=hook)(x.out) return x else: return theano.printing.Print(global_fn=hook)(x)
Example #21
Source File: theano_backend.py From keras-lambda with MIT License | 5 votes |
def variable(value, dtype=None, name=None): """Instantiates a variable and returns it. # Arguments value: Numpy array, initial value of the tensor. dtype: Tensor type. name: Optional name string for the tensor. # Returns A variable instance (with Keras metadata included). """ if dtype is None: dtype = floatx() if hasattr(value, 'tocoo'): _assert_sparse_module() variable = th_sparse_module.as_sparse_variable( value, name=_prepare_name(name, 'variable')) else: if isinstance(value, (theano.tensor.TensorVariable, theano.tensor.sharedvar.TensorSharedVariable, theano.tensor.TensorConstant)): # Support for RandomStreams().normal(), .uniform(). value = value.eval() value = np.asarray(value, dtype=dtype) variable = theano.shared(value=value, name=_prepare_name(name, 'variable'), strict=False) variable._keras_shape = value.shape variable._uses_learning_phase = False return variable
Example #22
Source File: utils.py From Attentive_reader with BSD 3-Clause "New" or "Revised" License | 5 votes |
def dbg_hook(hook, x): if not isinstance(x, TT.TensorVariable): x.out = theano.printing.Print(global_fn=hook)(x.out) return x else: return theano.printing.Print(global_fn=hook)(x)
Example #23
Source File: __init__.py From attention-lvcsr with MIT License | 5 votes |
def compute_step(self, parameter, previous_step): """Build a Theano expression for the step for a parameter. This method is called by default implementation of :meth:`compute_steps`, it relieves from writing a loop each time. Parameters ---------- parameter : :class:`~tensor.TensorSharedVariable` The parameter. previous_step : :class:`~tensor.TensorVariable` Some quantity related to the gradient of the cost with respect to the parameter, either the gradient itself or a step in a related direction. Returns ------- step : :class:`~theano.Variable` Theano variable for the step to take. updates : list A list of tuples representing updates to be performed. This is useful for stateful rules such as :class:`Momentum` which need to update shared variables after itetations. """ raise NotImplementedError
Example #24
Source File: theano_backend.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def variable(value, dtype=None, name=None, constraint=None): """Instantiates a variable and returns it. # Arguments value: Numpy array, initial value of the tensor. dtype: Tensor type. name: Optional name string for the tensor. constraint: Optional projection function to be applied to the variable after an optimizer update. # Returns A variable instance (with Keras metadata included). """ if dtype is None: dtype = floatx() if hasattr(value, 'tocoo'): _assert_sparse_module() variable = th_sparse_module.as_sparse_variable( value, name=_prepare_name(name, 'variable')) else: if isinstance(value, (theano.tensor.TensorVariable, theano.tensor.sharedvar.TensorSharedVariable, theano.tensor.TensorConstant)): # Support for RandomStreams().normal(), .uniform(). value = value.eval() value = np.asarray(value, dtype=dtype) variable = theano.shared(value=value, name=_prepare_name(name, 'variable'), strict=False) variable._keras_shape = value.shape variable._uses_learning_phase = False variable.constraint = constraint return variable
Example #25
Source File: layers.py From reseg with GNU General Public License v3.0 | 5 votes |
def __init__(self, l_in, crop, data_format='bc01', centered=True, **kwargs): super(CropLayer, self).__init__(l_in, crop, **kwargs) assert data_format in ['bc01', 'b01c'] if not isinstance(crop, T.TensorVariable): crop = lasagne.utils.as_tuple(crop, 2) self.crop = crop self.data_format = data_format self.centered = centered
Example #26
Source File: dataset_test.py From downhill with MIT License | 5 votes |
def test_shared(self): x = theano.shared(np.random.randn(40, 2)) ds = downhill.Dataset([x], batch_size=10, rng=4) assert len(ds._slices) == 4 assert_size(ds, 0, 10) assert_size(ds, 1, 10) assert_size(ds, 2, 10) assert_size(ds, 3, 10) f = list(ds)[0][0] assert isinstance(f, TT.TensorVariable), type(f)
Example #27
Source File: base.py From carl with BSD 3-Clause "New" or "Revised" License | 5 votes |
def set_params(self, **params): for name, value in params.items(): var = getattr(self, name, None) if isinstance(var, SharedVariable): var.set_value(value) elif (isinstance(var, T.TensorVariable) or isinstance(var, T.TensorConstant)): raise ValueError("Only shared variables can be updated.") else: super(DistributionMixin, self).set_params(**{name: value}) # XXX: shall we also allow replacement of variables and # recompile all expressions instead?
Example #28
Source File: test_base.py From carl with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_mixin_base(): # Check raw parameters p = Normal(mu=0.0, sigma=1.0) assert isinstance(p, DistributionMixin) assert len(p.parameters_) == 2 assert p.mu in p.parameters_ assert p.sigma in p.parameters_ assert isinstance(p.mu, SharedVariable) assert isinstance(p.sigma, SharedVariable) assert p.mu.get_value() == 0.0 assert p.sigma.get_value() == 1.0 assert len(p.observeds_) == 0 assert isinstance(p.X, TensorVariable)
Example #29
Source File: __init__.py From attention-lvcsr with MIT License | 5 votes |
def compute_steps(self, previous_steps): """Build a Theano expression for steps for all parameters. Override this method if you want to process the steps with respect to all parameters as a whole, not parameter-wise. Parameters ---------- previous_steps : OrderedDict An :class:`~OrderedDict` of (:class:`~tensor.TensorSharedVariable` :class:`~tensor.TensorVariable`) pairs. The keys are the parameters being trained, the values are the expressions for quantities related to gradients of the cost with respect to the parameters, either the gradients themselves or steps in related directions. Returns ------- steps : OrderedDict A dictionary of the proposed steps in the same form as `previous_steps`. updates : list A list of tuples representing updates to be performed. """ parameter_wise = [self.compute_step(parameter, previous_steps[parameter]) for parameter in previous_steps] steps, updates = equizip(*parameter_wise) steps = OrderedDict((parameter, step) for parameter, step in equizip(previous_steps.keys(), steps)) updates = list(itertools.chain(*updates)) return steps, updates
Example #30
Source File: simple.py From attention-lvcsr with MIT License | 5 votes |
def categorical_cross_entropy(self, application_call, y, x): """Computationally stable cross-entropy for pre-softmax values. Parameters ---------- y : :class:`~tensor.TensorVariable` In the case of a matrix argument, each row represents a probabilility distribution. In the vector case, each element represents a distribution by specifying the position of 1 in a 1-hot vector. x : :class:`~tensor.TensorVariable` A matrix, each row contains unnormalized probabilities of a distribution. Returns ------- cost : :class:`~tensor.TensorVariable` A vector of cross-entropies between respective distributions from y and x. """ x = self.log_probabilities(x) application_call.add_auxiliary_variable( x.copy(name='log_probabilities')) if y.ndim == x.ndim - 1: indices = tensor.arange(y.shape[0]) * x.shape[1] + y cost = -x.flatten()[indices] elif y.ndim == x.ndim: cost = -(x * y).sum(axis=1) else: raise TypeError('rank mismatch between x and y') return cost