Python theano.Variable() Examples
The following are 30
code examples of theano.Variable().
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
, or try the search function
.
Example #1
Source File: basic.py From D-VAE with MIT License | 6 votes |
def _is_sparse_variable(x): """ Returns ------- boolean True iff x is a L{SparseVariable} (and not a L{tensor.TensorType}, for instance). """ if not isinstance(x, gof.Variable): raise NotImplementedError("this function should only be called on " "*variables* (of type sparse.SparseType " "or tensor.TensorType, for instance), not ", x) return isinstance(x.type, SparseType)
Example #2
Source File: basic_ops.py From D-VAE with MIT License | 6 votes |
def get_flags(*types): def get_dtype(t): if isinstance(t, string_types): return numpy.dtype(t) elif isinstance(t, Type): return t.dtype elif isinstance(t, Variable): return t.type.dtype else: raise TypeError("can't get a dtype from %s" % (type(t),)) dtypes = [get_dtype(t) for t in types] flags = dict(cluda=True) if any(d == numpy.float64 for d in dtypes): flags['have_double'] = True if any(d.itemsize < 4 for d in dtypes): flags['have_small'] = True if any(d.kind == 'c' for d in dtypes): flags['have_complex'] = True if any(d == numpy.float16 for d in dtypes): flags['have_half'] = True return flags
Example #3
Source File: abstract_conv.py From D-VAE with MIT License | 6 votes |
def make_node(self, kern, topgrad, shape): # Make sure both inputs are Variables with the same Type if not isinstance(kern, theano.Variable): kern = as_tensor_variable(kern) if not isinstance(topgrad, theano.Variable): topgrad = as_tensor_variable(topgrad) gtype = kern.type.clone(dtype=topgrad.dtype, broadcastable=topgrad.broadcastable) topgrad = gtype.filter_variable(topgrad) if kern.type.ndim != 4: raise TypeError('kern must be 4D tensor') if topgrad.type.ndim != 4: raise TypeError('topgrad must be 4D tensor') shape = as_tensor_variable(shape) broadcastable = [topgrad.type.broadcastable[0], kern.type.broadcastable[1], False, False] output = kern.type.clone(broadcastable=broadcastable)() return Apply(self, [kern, topgrad, shape], [output])
Example #4
Source File: abstract_conv.py From D-VAE with MIT License | 6 votes |
def make_node(self, img, topgrad, shape): # Make sure both inputs are Variables with the same Type if not isinstance(img, theano.Variable): img = as_tensor_variable(img) if not isinstance(topgrad, theano.Variable): topgrad = as_tensor_variable(topgrad) gtype = img.type.clone(dtype=topgrad.dtype, broadcastable=topgrad.broadcastable) topgrad = gtype.filter_variable(topgrad) if img.type.ndim != 4: raise TypeError('img must be 4D tensor') if topgrad.type.ndim != 4: raise TypeError('topgrad must be 4D tensor') shape = as_tensor_variable(shape) broadcastable = [topgrad.broadcastable[1], img.broadcastable[1], False, False] output = img.type.clone(broadcastable=broadcastable)() return Apply(self, [img, topgrad, shape], [output])
Example #5
Source File: abstract_conv.py From D-VAE with MIT License | 6 votes |
def make_node(self, img, kern): # Make sure both inputs are Variables with the same Type if not isinstance(img, theano.Variable): img = as_tensor_variable(img) if not isinstance(kern, theano.Variable): kern = as_tensor_variable(kern) ktype = img.type.clone(dtype=kern.dtype, broadcastable=kern.broadcastable) kern = ktype.filter_variable(kern) if img.type.ndim != 4: raise TypeError('img must be 4D tensor') if kern.type.ndim != 4: raise TypeError('kern must be 4D tensor') broadcastable = [img.broadcastable[0], kern.broadcastable[0], False, False] output = img.type.clone(broadcastable=broadcastable)() return Apply(self, [img, kern], [output])
Example #6
Source File: basic.py From attention-lvcsr with MIT License | 6 votes |
def _is_sparse_variable(x): """ Returns ------- boolean True iff x is a L{SparseVariable} (and not a L{tensor.TensorType}, for instance). """ if not isinstance(x, gof.Variable): raise NotImplementedError("this function should only be called on " "*variables* (of type sparse.SparseType " "or tensor.TensorType, for instance), not ", x) return isinstance(x.type, SparseType)
Example #7
Source File: dnn.py From attention-lvcsr with MIT License | 5 votes |
def ensure_dt(val, default, name, dtype): if val is None: val = default.clone() if not isinstance(val, Variable): val = constant(val) if hasattr(val, 'ndim') and val.ndim == 0: val = as_scalar(val) if not isinstance(val.type, theano.scalar.Scalar): raise TypeError("%s: expected a scalar value" % (name,)) if not val.type.dtype == dtype: val = val.astype(dtype) return val
Example #8
Source File: nerv.py From attention-lvcsr with MIT License | 5 votes |
def ensure_float(val, name): if not isinstance(val, Variable): val = constant(val) if hasattr(val, 'ndim') and val.ndim == 0: val = as_scalar(val) if not isinstance(val.type, theano.scalar.Scalar): raise TypeError("%s: expected a scalar value" % (name,)) if not val.type.dtype == 'float32': raise TypeError("%s: type is not float32" % (name,)) return val
Example #9
Source File: basic.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, data, indices, indptr, shape): data = tensor.as_tensor_variable(data) if not isinstance(indices, gof.Variable): indices_ = numpy.asarray(indices) indices_32 = theano._asarray(indices, dtype='int32') assert (indices_ == indices_32).all() indices = indices_32 if not isinstance(indptr, gof.Variable): indptr_ = numpy.asarray(indptr) indptr_32 = theano._asarray(indptr, dtype='int32') assert (indptr_ == indptr_32).all() indptr = indptr_32 if not isinstance(shape, gof.Variable): shape_ = numpy.asarray(shape) shape_32 = theano._asarray(shape, dtype='int32') assert (shape_ == shape_32).all() shape = shape_32 indices = tensor.as_tensor_variable(indices) indptr = tensor.as_tensor_variable(indptr) shape = tensor.as_tensor_variable(shape) if data.type.ndim != 1: raise TypeError('data argument must be a vector', data.type, data.type.ndim) if indices.type.ndim != 1 or indices.type.dtype not in discrete_dtypes: raise TypeError('indices must be vector of integers', indices, indices.type) if indptr.type.ndim != 1 or indptr.type.dtype not in discrete_dtypes: raise TypeError('indices must be vector of integers', indptr, indptr.type) if shape.type.ndim != 1 or shape.type.dtype not in discrete_dtypes: raise TypeError('n_rows must be integer type', shape, shape.type) return gof.Apply(self, [data, indices, indptr, shape], [SparseType(dtype=data.type.dtype, format=self.format)()])
Example #10
Source File: scan_utils.py From attention-lvcsr with MIT License | 5 votes |
def forced_replace(out, x, y): """ Check all internal values of the graph that compute the variable ``out`` for occurrences of values identical with ``x``. If such occurrences are encountered then they are replaced with variable ``y``. Parameters ---------- out : Theano Variable x : Theano Variable y : Theano Variable Examples -------- out := sigmoid(wu)*(1-sigmoid(wu)) x := sigmoid(wu) forced_replace(out, x, y) := y*(1-y) """ if out is None: return None # ``visited`` is a set of nodes that are already known and don't need to be # checked again, speeding up the traversal of multiply-connected graphs. visited = set() def local_traverse(graph, x): if graph in visited: return [] visited.add(graph) if equal_computations([graph], [x]): return [graph] elif not graph.owner: return [] else: rval = [] for inp in graph.owner.inputs: rval += local_traverse(inp, x) return rval to_replace = local_traverse(out, x) return clone(out, replace=OrderedDict((v, y) for v in to_replace))
Example #11
Source File: dnn.py From attention-lvcsr with MIT License | 5 votes |
def ensure_float(val, default, name): if val is None: return default.clone() if not isinstance(val, Variable): val = constant(val) if hasattr(val, 'ndim') and val.ndim == 0: val = as_scalar(val) if not isinstance(val.type, theano.scalar.Scalar): raise TypeError("%s: expected a scalar value" % (name,)) if not val.type.dtype == 'float32': raise TypeError("%s: type is not float32" % (name,)) return val
Example #12
Source File: breakpoint.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, condition, *monitored_vars): # Ensure that condition is a theano tensor if not isinstance(condition, theano.Variable): condition = theano.tensor.as_tensor_variable(condition) # Validate that the condition is a scalar (else it is not obvious how # is should be evaluated) assert (condition.ndim == 0) # Because the user might be tempted to instantiate PdbBreakpoint only # once and apply it many times on different number of inputs, we must # create a new instance of the op here, define the instance attributes # (view_map and var_types) in that instance and then apply it on the # inputs. new_op = PdbBreakpoint(name=self.name) new_op.view_map = {} new_op.inp_types = [] for i in range(len(monitored_vars)): # Every output i is a view of the input i+1 because of the input # condition. new_op.view_map[i] = [i + 1] new_op.inp_types.append(monitored_vars[i].type) # Build the Apply node inputs = [condition] + list(monitored_vars) outputs = [inp.type() for inp in monitored_vars] return Apply(op=new_op, inputs=inputs, outputs=outputs)
Example #13
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 #14
Source File: __init__.py From attention-lvcsr with MIT License | 5 votes |
def __init__(self, outputs): if isinstance(outputs, Variable): outputs = [outputs] self.outputs = outputs self._get_variables() self._has_inputs = {}
Example #15
Source File: linear.py From TextDetector with GNU General Public License v3.0 | 5 votes |
def split_left_shape(self, xshp, T): """ .. todo:: WRITEME """ if type(xshp) != tuple: raise TypeError('need tuple', xshp) # supposing self.col_shape is (C1, C2, C3) ... cshp = self.col_shape() assert type(cshp) == tuple if T: # C1 C2 C3 R1 R2 ss = len(cshp) RR, CC = xshp[ss:], xshp[:ss] else: # R1 R2 C1 C2 C3 ss = len(xshp) - len(cshp) RR, CC = xshp[:ss], xshp[ss:] if len(CC) != len(cshp) or ( not all((isinstance(cc, theano.Variable) or cc == ci) for cc, ci in zip(CC, cshp))): raise ValueError('invalid left shape', dict(xshp=xshp, col_shape=cshp, xcols=CC, T=T)) if T: return CC, RR else: return RR, CC
Example #16
Source File: linear.py From TextDetector with GNU General Public License v3.0 | 5 votes |
def split_right_shape(self, xshp, T): """ .. todo:: WRITEME """ if type(xshp) != tuple: raise TypeError('need tuple', xshp) # supposing self.row_shape is (R1, R2) ... rshp = self.row_shape() assert type(rshp) == tuple if T: # C1 C2 C3 R1 R2 ss = len(xshp) - len(rshp) RR, CC = xshp[ss:], xshp[:ss] else: # R1 R2 C1 C2 C3 ss = len(rshp) RR, CC = xshp[:ss], xshp[ss:] if len(RR) != len(rshp) or ( not all((isinstance(rr, theano.Variable) or rr == ri) for rr, ri in zip(RR, rshp))): raise ValueError('invalid left shape', dict(xshp=xshp, row_shape=rshp, xrows=RR, T=T)) if T: return CC, RR else: return RR, CC
Example #17
Source File: unshared_conv.py From TextDetector with GNU General Public License v3.0 | 5 votes |
def any_symbolic(*args): """ Return True iff any a in `args` is a theano Variable """ for a in args: if isinstance(a, theano.Variable): return True return False
Example #18
Source File: type.py From attention-lvcsr with MIT License | 5 votes |
def c_code_cache_version(self): ver = pygpu.gpuarray.api_version() return (0, ver[0]) # Variable, Contstant, ... not declared
Example #19
Source File: ops.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, x): # x could be one of a number of types # the only thing we require is that the variable have a .ndim, # and that the value have a .shape if not isinstance(x, theano.Variable): raise TypeError('x must be Variable with ndim attribute', x) if x.ndim <= self.i: raise TypeError('x has too few dimensions for Shape_i', (x, self.i)) return theano.Apply(self, [x], [theano.tensor.lscalar()])
Example #20
Source File: nlinalg.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, _x): if not isinstance(_x, theano.Variable): x = as_tensor_variable(_x) else: x = _x if x.type.ndim != 2: raise TypeError('ExtractDiag only works on matrices', _x) return Apply(self, [x], [x.type.__class__(broadcastable=(False,), dtype=x.type.dtype)()])
Example #21
Source File: test_io.py From attention-lvcsr with MIT License | 5 votes |
def test_memmap(self): path = Variable(Generic()) x = tensor.load(path, 'int32', (False,), mmap_mode='c') fn = function([path], x) assert type(fn(self.filename)) == numpy.core.memmap
Example #22
Source File: test_io.py From attention-lvcsr with MIT License | 5 votes |
def test1(self): path = Variable(Generic()) # 'c' means "copy-on-write", which allow the array to be overwritten # by an inplace Op in the graph, without modifying the underlying # file. x = tensor.load(path, 'int32', (False,), 'c') # x ** 2 has been chosen because it will work inplace. y = (x ** 2).sum() fn = function([path], y) # Call fn() twice, to check that inplace ops do not cause trouble assert (fn(self.filename) == (self.data ** 2).sum()).all() assert (fn(self.filename) == (self.data ** 2).sum()).all()
Example #23
Source File: test_io.py From attention-lvcsr with MIT License | 5 votes |
def test_invalid_modes(self): # Modes 'r+', 'r', and 'w+' cannot work with Theano, becausei # the output array may be modified inplace, and that should not # modify the original file. path = Variable(Generic()) for mmap_mode in ('r+', 'r', 'w+', 'toto'): self.assertRaises(ValueError, tensor.load, path, 'int32', (False,), mmap_mode)
Example #24
Source File: test_io.py From attention-lvcsr with MIT License | 5 votes |
def test0(self): path = Variable(Generic()) # Not specifying mmap_mode defaults to None, and the data is # copied into main memory x = tensor.load(path, 'int32', (False,)) y = x * 2 fn = function([path], y) assert (fn(self.filename) == (self.data * 2)).all()
Example #25
Source File: io.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, data): return gof.Apply(self, [data], [theano.Variable(Generic()), data.type()])
Example #26
Source File: io.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self): return gof.Apply(self, [], [theano.Variable(Generic()), tensor(self.dtype, broadcastable=self.broadcastable)])
Example #27
Source File: io.py From attention-lvcsr with MIT License | 5 votes |
def load(path, dtype, broadcastable, mmap_mode=None): """ Load an array from an .npy file. Parameters ---------- path A Generic symbolic variable, that will contain a string dtype : data-type The data type of the array to be read. broadcastable The broadcastable pattern of the loaded array, for instance, (False,) for a vector, (False, True) for a column, (False, False) for a matrix. mmap_mode How the file will be loaded. None means that the data will be copied into an array in memory, 'c' means that the file will be mapped into virtual memory, so only the parts that are needed will be actually read from disk and put into memory. Other modes supported by numpy.load ('r', 'r+', 'w+') cannot be supported by Theano. Examples -------- >>> from theano import * >>> path = Variable(Generic()) >>> x = tensor.load(path, 'int64', (False,)) >>> y = x*2 >>> fn = function([path], y) >>> fn("stored-array.npy") # doctest: +SKIP array([0, 2, 4, 6, 8], dtype=int64) """ return LoadFromDisk(dtype, broadcastable, mmap_mode)(path) ########################## # MPI ##########################
Example #28
Source File: pool.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, x, gz, dummy=None): # make_node should only be called by the grad function of # Pool, so these asserts should not fail. assert isinstance(x, Variable) and x.ndim == 4 assert isinstance(gz, Variable) and gz.ndim == 4 x = tensor.as_tensor_variable(x) gz = tensor.as_tensor_variable(gz) return Apply(self, [x, gz], [x.type()])
Example #29
Source File: pool.py From attention-lvcsr with MIT License | 5 votes |
def make_node(self, x, maxout, gz): # make_node should only be called by the grad function of # Pool, so these asserts should not fail. assert isinstance(x, Variable) and x.ndim == 4 assert isinstance(maxout, Variable) and maxout.ndim == 4 assert isinstance(gz, Variable) and gz.ndim == 4 x = tensor.as_tensor_variable(x) maxout = tensor.as_tensor_variable(maxout) gz = tensor.as_tensor_variable(gz) return Apply(self, [x, maxout, gz], [x.type()])
Example #30
Source File: extensions.py From cpae with MIT License | 5 votes |
def do(self, *args, **kwargs): logger.info("Computation graph statistics:") cost_cg = ComputationGraph(self.main_loop.algorithm.cost) updates_cg = ComputationGraph( [u[1] for u in self.main_loop.algorithm.updates if isinstance(u[1], theano.Variable)]) cost_nodes = io_toposort(cost_cg.inputs, cost_cg.outputs) updates_nodes = io_toposort(updates_cg.inputs, updates_cg.outputs) cost_scan_nodes = [ node for node in cost_nodes if isinstance(node.op, Scan)] updates_scan_nodes = [ node for node in updates_nodes if isinstance(node.op, Scan)] final_scan_nodes = [ node for node in self.main_loop.algorithm._function.maker.fgraph.apply_nodes if isinstance(node.op, Scan)] logger.info("SCAN NODES IN THE COST GRAPH:") for n in cost_scan_nodes: logger.info(n.op.name) logger.info("SCAN NODES IN THE UPDATES GRAPH:") for n in updates_scan_nodes: logger.info(n.op.name) logger.info("SCAN NODES IN THE FINAL GRAPH:") for n in final_scan_nodes: logger.info(n.op.name)