def opt(node): if (isinstance(node.op, GpuElemwise) and node.op.scalar_op == scal.add and node.nin == 2): targ = find_node(node.inputs[0], cls) W = node.inputs[1] if targ is None: targ = find_node(node.inputs[1], cls) W = node.inputs[0] if targ is None: return None if W.dtype != targ.outputs[0].dtype: return None if not is_equal(targ.inputs[beta_in], 0.0): # other cases are too complex for now return None if W.broadcastable != targ.inputs[out_in].broadcastable: # Would need to explicitly tile the output to fill # the full shape here. Disable for now. return None inputs = list(targ.inputs) inputs[out_in] = W dtype = inputs[beta_in].dtype one = scal.constant(np.asarray(1.0, dtype=dtype)) inputs[beta_in] = one with inherit_stack_trace(node.outputs): return maker(targ, *inputs)
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
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
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
from __future__ import absolute_import, print_function, division from functools import wraps import numpy as np from theano import tensor, scalar as scal, Constant from theano.gof import local_optimizer from theano.tensor import (DimShuffle, get_scalar_constant_value, NotScalarConstantError) from .basic_ops import GpuFromHost, HostFromGpu, GpuAllocEmpty, GpuReshape from .elemwise import GpuDimShuffle, GpuElemwise _one = scal.constant(np.asarray(1.0, dtype='float32')) def grab_cpu_scalar(v, nd): """ Get a scalar variable value from the tree at `v`. This function will dig through transfers and dimshuffles to get the constant value. If no such constant is found, it returns None. Parameters ---------- v Theano variable to extract the constant value from. nd : int Expected number of dimensions for the variable (for broadcasted constants).
from functools import wraps import numpy from theano import scalar as scal, Constant from theano.gof import local_optimizer from theano.tensor import (DimShuffle, get_scalar_constant_value, NotScalarConstantError) from theano.sandbox.cuda.basic_ops import (GpuFromHost, HostFromGpu, host_from_gpu, GpuDimShuffle, GpuElemwise) _one = scal.constant(numpy.asarray(1.0, dtype='float32')) def grab_cpu_scalar(v, nd): if v.owner is not None: n = v.owner if (isinstance(n.op, GpuDimShuffle) and n.op.new_order == ('x', ) * nd): return host_from_gpu(n.inputs[0]) elif (isinstance(n.op, DimShuffle) and n.op.new_order == ('x', ) * nd): return n.inputs[0] elif isinstance(n.op, GpuFromHost): return grab_cpu_scalar(n.inputs[0], nd=nd) else: return None else: if (isinstance(v, Constant) and v.broadcastable == (True, ) * nd): return v.dimshuffle(())
if len(self.subsample) > 2: sub2 = str(self.subsample[2]) else: sub2 = '0' return [('NB_DIMS', str(len(self.subsample))), ('BORDER_MODE', bmode), ('PAD_0', pad0), ('PAD_1', pad1), ('PAD_2', pad2), ('CONV_MODE', conv_flag), ('SUB_0', sub0), ('SUB_1', sub1), ('SUB_2', sub2)] def c_code_cache_version(self): return (super(GpuDnnConvDesc, self).c_code_cache_version(), version()) # scalar constants _zero = constant(numpy.asarray(0.0, dtype='float64')) _one = constant(numpy.asarray(1.0, dtype='float64')) 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
from __future__ import absolute_import, print_function, division from functools import wraps import numpy from theano import scalar as scal, Constant from theano.gof import local_optimizer from theano.tensor import DimShuffle, get_scalar_constant_value, NotScalarConstantError from .basic_ops import GpuFromHost, HostFromGpu, GpuAllocEmpty from .elemwise import GpuDimShuffle, GpuElemwise _one = scal.constant(numpy.asarray(1.0, dtype="float64")) def grab_cpu_scalar(v, nd): """ Get a scalar variable value from the tree at `v`. This function will dig through transfers and dimshuffles to get the constant value. If no such constant is found, it returns None. Parameters ---------- v Theano variable to extract the constant value from. nd : int Expected number of dimensions for the variable (for broadcasted constants). """
from functools import wraps import numpy from theano import scalar as scal, Constant from theano.gof import local_optimizer from theano.tensor import (DimShuffle, get_scalar_constant_value, NotScalarConstantError) from .basic_ops import GpuFromHost, HostFromGpu, GpuAllocEmpty from .elemwise import GpuDimShuffle, GpuElemwise _one = scal.constant(numpy.asarray(1.0, dtype='float64')) def grab_cpu_scalar(v, nd): """ Get a scalar variable value from the tree at `v`. This function will dig through transfers and dimshuffles to get the constant value. If no such constant is found, it returns None. Parameters ---------- v : variable Theano variable to extract the constant value from. nd : int Expected number of dimensions for the variable (for broadcasted constants). """
from __future__ import absolute_import, print_function, division from functools import wraps import numpy from theano import scalar as scal, Constant, config from theano.gof import local_optimizer from theano.tensor import (DimShuffle, get_scalar_constant_value, NotScalarConstantError) from .basic_ops import GpuFromHost, HostFromGpu, GpuAllocEmpty from .elemwise import GpuDimShuffle, GpuElemwise _one = scal.constant(numpy.asarray(1.0, dtype=config.floatX)) def grab_cpu_scalar(v, nd): """ Get a scalar variable value from the tree at `v`. This function will dig through transfers and dimshuffles to get the constant value. If no such constant is found, it returns None. Parameters ---------- v Theano variable to extract the constant value from. nd : int Expected number of dimensions for the variable (for broadcasted constants).