Python chainer.variable.Variable() Examples
The following are 30
code examples of chainer.variable.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
chainer.variable
, or try the search function
.
Example #1
Source File: optimizer.py From chainer with MIT License | 6 votes |
def reallocate_cleared_grads(self): """Reallocate gradients cleared by :meth:`~chainer.Variable.cleargrad`. This method allocates arrays for all gradients which have :obj:`None`. This method is called before and after every optimizer hook. If an inheriting optimizer does not require this allocation, the optimizer can override this method with a blank function. """ for name, param in self.target.namedparams(False): with variable._AllowArrayAccessWithNonstandardLayout(): has_grad = param.grad is not None if not has_grad: device = param.device with chainer.using_device(device): param._set_grad( device.xp.zeros_like(param.raw_array), layout_check=False)
Example #2
Source File: black_out.py From chainer with MIT License | 6 votes |
def forward(self, x, t): """Computes the loss value for given input and ground truth labels. Args: x (~chainer.Variable): Input of the weight matrix multiplication. t (~chainer.Variable): Batch of ground truth labels. Returns: ~chainer.Variable: Loss value. """ batch_size = x.shape[0] if self.sample_data is not None: # for test sample_data = self.sample_data else: shape = (batch_size, self.sample_size) sample_data = self.sampler.sample(shape) samples = variable.Variable(sample_data, requires_grad=False) return black_out.black_out(x, t, self.W, samples)
Example #3
Source File: linear.py From chainer with MIT License | 6 votes |
def from_params(cls, W, b=None, nobias=False): """Initialize a :class:`~chainer.links.Linear` with given parameters. This method uses ``W`` and optional ``b`` to initialize a linear layer. Args: W (:class:`~chainer.Variable` or :ref:`ndarray`): The weight parameter. b (:class:`~chainer.Variable`, :ref:`ndarray`, or ``None``): The bias parameter. nobias (bool): If ``True``, the argument of ``b`` is ignored in spite of whether it's given or not. """ out_size, in_size = W.shape if b is not None: if out_size != b.size: raise ValueError('`out_size` does not match the size of `b`') link = cls( in_size, out_size, nobias, initialW=variable.as_array(W), initial_bias=variable.as_array(b)) return link
Example #4
Source File: linear.py From chainer with MIT License | 6 votes |
def forward( self, x: variable.Variable, n_batch_axes: int = 1 ) -> variable.Variable: """Applies the linear layer. Args: x (~chainer.Variable): Batch of input vectors. n_batch_axes (int): The number of batch axes. The default is 1. The input variable is reshaped into (:math:`{\\rm n\\_batch\\_axes} + 1`)-dimensional tensor. This should be greater than 0. Returns: ~chainer.Variable: Output of the linear layer. """ if self.W.array is None: in_size = utils.size_of_shape(x.shape[n_batch_axes:]) self._initialize_params(in_size) return linear.linear(x, self.W, self.b, n_batch_axes=n_batch_axes)
Example #5
Source File: zoneoutlstm.py From chainer with MIT License | 6 votes |
def set_state(self, c, h): """Sets the internal state. It sets the :attr:`c` and :attr:`h` attributes. Args: c (~chainer.Variable): A new cell states of LSTM units. h (~chainer.Variable): A new output at the previous time step. """ assert isinstance(c, variable.Variable) assert isinstance(h, variable.Variable) c.to_device(self.device) h.to_device(self.device) self.c = c self.h = h
Example #6
Source File: lstm.py From chainer with MIT License | 6 votes |
def set_state(self, c, h): """Sets the internal state. It sets the :attr:`c` and :attr:`h` attributes. Args: c (~chainer.Variable): A new cell states of LSTM units. h (~chainer.Variable): A new output at the previous time step. """ assert isinstance(c, variable.Variable) assert isinstance(h, variable.Variable) c.to_device(self.device) h.to_device(self.device) self.c = c self.h = h
Example #7
Source File: gradient_check.py From chainer with MIT License | 6 votes |
def _forward_for_backward_gradients(self): func = self.func xs = self.xs params = self.params xs = [ None if x is None else variable.Variable(x, requires_grad=x.dtype.kind == 'f') for x in xs] if self.is_immutable_params: params = tuple([chainer.Parameter(p) for p in params]) ys = func(xs, params) else: ys = func(*xs) ys = _as_tuple(ys) # Clear gradients which may exist if func calls backward inside of # itself. self._clear_grads(xs) self._clear_grads(params) return xs, ys, params
Example #8
Source File: debug_print.py From chainer with MIT License | 6 votes |
def _process(self, function, in_data, out_grad=None): self._print('function\t{}'.format(function.label)) self._print('input data') for d in in_data: if d is None: # Some inputs can be removed with `retain_grad`. self._print('(removed)') continue self._print(variable.Variable(d).debug_print()) if out_grad is not None: self._print('output gradient') for d in out_grad: if d is None: v = variable.Variable() else: xp = backend.get_array_module(d) v = variable.Variable(xp.zeros_like(d, dtype=d.dtype)) v.grad = d self._print(v.debug_print()) if self.flush and hasattr(self.file, 'flush'): self.file.flush()
Example #9
Source File: optimizer.py From chainer with MIT License | 6 votes |
def update_core(self, param): """Updates the parameter. Implementation of UpdateRule should override this method or both of :meth:`update_core_cpu` and :meth:`update_core_gpu`. Args: param (~chainer.Variable): Variable to be updated. """ device = param.device with chainer.using_device(device): if device.xp is chainerx: self.update_core_chainerx(param) elif device.xp is numpy: self.update_core_cpu(param) else: self.update_core_gpu(param)
Example #10
Source File: basic_math.py From chainer with MIT License | 6 votes |
def _convert_value_to_string(value): if isinstance(value, variable.Variable): value = value.data if numpy.isscalar(value): if value < 0: return '({})'.format(value) else: return str(value) array_types = chainer.get_array_types() if isinstance(value, array_types): return 'constant array' else: raise ValueError( 'Value must be a Variable, scalar, {} or {}. Actual: {}'.format( ', '.join([str(at) for at in array_types[:-1]]), array_types[-1], type(value)))
Example #11
Source File: reporter.py From chainer with MIT License | 6 votes |
def add(self, d): """Adds a dictionary of scalars. Args: d (dict): Dictionary of scalars to accumulate. Only elements of scalars, zero-dimensional arrays, and variables of zero-dimensional arrays are accumulated. When the value is a tuple, the second element is interpreted as a weight. """ summaries = self._summaries for k, v in six.iteritems(d): w = 1 if isinstance(v, tuple): w = v[1] v = v[0] if isinstance(w, variable.Variable): w = w.array if not numpy.isscalar(w) and not getattr(w, 'ndim', -1) == 0: raise ValueError( 'Given weight to {} was not scalar.'.format(k)) if isinstance(v, variable.Variable): v = v.array if numpy.isscalar(v) or getattr(v, 'ndim', -1) == 0: summaries[k].add(v, weight=w)
Example #12
Source File: googlenet.py From chainer with MIT License | 5 votes |
def predict(self, images, oversample=True): """Computes all the probabilities of given images. Args: images (iterable of PIL.Image or numpy.ndarray): Input images. When you specify a color image as a :class:`numpy.ndarray`, make sure that color order is RGB. oversample (bool): If ``True``, it averages results across center, corners, and mirrors. Otherwise, it uses only the center. Returns: ~chainer.Variable: Output that contains the class probabilities of given images. """ x = concat_examples([prepare(img, size=(256, 256)) for img in images]) if oversample: x = imgproc.oversample(x, crop_dims=(224, 224)) else: x = x[:, :, 16:240, 16:240] # Use no_backprop_mode to reduce memory consumption with function.no_backprop_mode(), chainer.using_config('train', False): x = Variable(self.xp.asarray(x)) y = self(x, layers=['prob'])['prob'] if oversample: n = len(y) // 10 y_shape = y.shape[1:] y = reshape(y, (n, 10) + y_shape) y = average(y, axis=1) return y
Example #13
Source File: function.py From chainer with MIT License | 5 votes |
def no_backprop_mode(): """Make a context manager which disables back-propagation. In this context, Chainer does not make a computational graph. It has the benefit of reducing memory consumption. However, a :class:`~chainer.Variable` created in this context does not hold a reference to the :class:`~chainer.FunctionNode` that created itself so no gradients are accumulated by :func:`~chainer.Variable.backward`. In the following example, ``y`` is created in this context, which means that calling :func:`~chainer.Variable.backward` on ``y`` has no effect on the gradients of ``x``. >>> x = chainer.Variable(np.array([1,], np.float32)) >>> with chainer.no_backprop_mode(): ... y = x + 1 >>> y.backward() >>> x.grad is None True .. note:: ``chainer.no_backprop_mode()`` implicitly applies ChainerX's counterpart :func:`chainerx.no_backprop_mode()`, but not vice versa. Also, setting ``enable_backprop`` :ref:`configuration <configuration>` does not affect ChainerX. .. seealso:: See :func:`chainer.force_backprop_mode` for details on how to override this context. """ c = configuration.using_config('enable_backprop', False) if chainerx.is_available(): return _BackpropModeContext((c, chainerx.no_backprop_mode())) return _BackpropModeContext((c,))
Example #14
Source File: n_step_lstm.py From chainer with MIT License | 5 votes |
def _extract_apply_in_data(inputs): if not inputs: return False, () if chainerx.is_available(): has_chainerx_array = False # Unwrap arrays arrays = [] for x in inputs: if isinstance(x, variable.Variable): if x._has_chainerx_array: arrays.append(x._data[0]) has_chainerx_array = True else: arrays.append(x.array) else: # x is ndarray arrays.append(x) if not has_chainerx_array: if isinstance(x, chainerx.ndarray): has_chainerx_array = True return has_chainerx_array, tuple(arrays) else: return False, tuple([ x.array if isinstance(x, variable.Variable) else x for x in inputs])
Example #15
Source File: gumbel_softmax.py From chainer with MIT License | 5 votes |
def gumbel_softmax(log_pi, tau=0.1, axis=1): """Gumbel-Softmax sampling function. This function draws samples :math:`y_i` from Gumbel-Softmax distribution, .. math:: y_i = {\\exp((g_i + \\log\\pi_i)/\\tau) \\over \\sum_{j}\\exp((g_j + \\log\\pi_j)/\\tau)}, where :math:`\\tau` is a temperature parameter and :math:`g_i` s are samples drawn from Gumbel distribution :math:`Gumbel(0, 1)` See `Categorical Reparameterization with Gumbel-Softmax <https://arxiv.org/abs/1611.01144>`_. Args: log_pi (:class:`~chainer.Variable` or :ref:`ndarray`): Input variable representing pre-normalized log-probability :math:`\\log\\pi`. tau (:class:`~float` or :class:`~chainer.Variable` or :ref:`ndarray`): Input variable representing temperature :math:`\\tau`. Returns: ~chainer.Variable: Output variable. """ xp = backend.get_array_module(log_pi) if log_pi.ndim < 1: return variable.Variable(xp.ones((), log_pi.dtype)) dtype = log_pi.dtype g = xp.random.gumbel(size=log_pi.shape).astype(dtype) y = chainer.functions.softmax((log_pi + g) / tau, axis=axis) return y
Example #16
Source File: simplified_dropconnect.py From chainer with MIT License | 5 votes |
def forward(self, inputs): self.retain_inputs((0, 1)) scale = inputs[1].dtype.type(1. / (1 - self.ratio)) xp = backend.get_array_module(*inputs) if self.mask is None: if self.use_batchwise_mask: mask_shape = (inputs[0].shape[0], inputs[1].shape[0], inputs[1].shape[1]) else: mask_shape = (inputs[1].shape[0], inputs[1].shape[1]) if xp == numpy: self.mask = xp.random.rand(*mask_shape) >= self.ratio else: self.mask = xp.random.rand(*mask_shape, dtype=numpy.float32) >= self.ratio elif isinstance(self.mask, variable.Variable): self.mask = self.mask.data x = _as_mat(inputs[0]) W = inputs[1] * scale * self.mask # (i)jk,ik->ij y = _matmul(W, x[:, :, None], xp) y = y.reshape(y.shape[0], y.shape[1]).astype(x.dtype, copy=False) if len(inputs) == 3: b = inputs[2] y += b return y,
Example #17
Source File: basic_math.py From chainer with MIT License | 5 votes |
def _chainerx_preprocess_const(x, value, label): # Allow mixing of numpy/cupy array and chainerx array as long as # conversion without copy is possible. if isinstance(value, (numpy.ndarray, cuda.ndarray)): # TODO(niboshi): force zero-copy return backend.to_chx(value) if isinstance(value, (six.integer_types, float)): return value if isinstance(value, numpy.generic): return value.item() if isinstance(value, variable.Variable): value = variable.as_array(value) utils._check_arrays_forward_compatible((x, value), label) return value
Example #18
Source File: basic_math.py From chainer with MIT License | 5 votes |
def _preprocess_rhs(x, value): if isinstance(value, chainer.Variable): return value if not (numpy.isscalar(value) or isinstance(value, chainer.get_array_types())): raise TypeError( 'Value must be a scalar, `numpy.ndarray`, `cupy.ndarray` ' 'or a `Variable`.\nActual: {}'.format(type(value))) return value.astype(x.dtype, copy=False)
Example #19
Source File: basic_math.py From chainer with MIT License | 5 votes |
def absolute(self): """Element-wise absolute. Returns: ~chainer.Variable: Output variable. """ return Absolute().apply((self,))[0]
Example #20
Source File: basic_math.py From chainer with MIT License | 5 votes |
def add(*xs): # lhs + rhs or add more than 2 variables """Element-wise addition. Returns: ~chainer.Variable: Output variable. """ if len(xs) == 2: lhs, rhs = xs if numpy.isscalar(rhs): return AddConstant(rhs).apply((lhs,))[0] rhs = _preprocess_rhs(lhs, rhs) return Add().apply((lhs, rhs))[0] else: return MultiAdd().apply(xs)[0]
Example #21
Source File: n_step_gru.py From chainer with MIT License | 5 votes |
def _extract_apply_in_data(inputs): if not inputs: return False, () if chainerx.is_available(): has_chainerx_array = False # Unwrap arrays arrays = [] for x in inputs: if isinstance(x, variable.Variable): if x._has_chainerx_array: arrays.append(x._data[0]) has_chainerx_array = True else: arrays.append(x.array) else: # x is ndarray arrays.append(x) if not has_chainerx_array: if isinstance(x, chainerx.ndarray): has_chainerx_array = True return has_chainerx_array, tuple(arrays) else: return False, tuple([ x.array if isinstance(x, variable.Variable) else x for x in inputs])
Example #22
Source File: vgg.py From chainer with MIT License | 5 votes |
def predict(self, images, oversample=True): """Computes all the probabilities of given images. Args: images (iterable of PIL.Image or numpy.ndarray): Input images. When you specify a color image as a :class:`numpy.ndarray`, make sure that color order is RGB. oversample (bool): If ``True``, it averages results across center, corners, and mirrors. Otherwise, it uses only the center. Returns: ~chainer.Variable: Output that contains the class probabilities of given images. """ x = concat_examples([prepare(img, size=(256, 256)) for img in images]) if oversample: x = imgproc.oversample(x, crop_dims=(224, 224)) else: x = x[:, :, 16:240, 16:240] # Use no_backprop_mode to reduce memory consumption with function.no_backprop_mode(), chainer.using_config('train', False): x = Variable(self.xp.asarray(x)) y = self(x, layers=['prob'])['prob'] if oversample: n = len(y) // 10 y_shape = y.shape[1:] y = reshape(y, (n, 10) + y_shape) y = sum(y, axis=1) / 10 return y
Example #23
Source File: gru.py From chainer with MIT License | 5 votes |
def set_state(self, h): assert isinstance(h, variable.Variable) h.to_device(self.device) self.h = h
Example #24
Source File: peephole.py From chainer with MIT License | 5 votes |
def forward(self, x): """Updates the internal state and returns the LSTM outputs. Args: x (~chainer.Variable): A new batch from the input sequence. Returns: ~chainer.Variable: Outputs of updated LSTM units. """ lstm_in = self.upward(x) if self.h is not None: lstm_in += self.lateral(self.h) if self.c is None: xp = self.xp with chainer.using_device(self.device): self.c = variable.Variable( xp.zeros((len(x), self.state_size), dtype=x.dtype)) lstm_in = reshape.reshape( lstm_in, (len(lstm_in), lstm_in.shape[1] // 4, 4)) a, i, f, o = split_axis.split_axis(lstm_in, 4, 2) a = reshape.reshape(a, a.shape[:2]) i = reshape.reshape(i, i.shape[:2]) f = reshape.reshape(f, f.shape[:2]) o = reshape.reshape(o, o.shape[:2]) peep_in_i = self.peep_i(self.c) peep_in_f = self.peep_f(self.c) a = tanh.tanh(a) i = sigmoid.sigmoid(i + peep_in_i) f = sigmoid.sigmoid(f + peep_in_f) self.c = a * i + f * self.c peep_in_o = self.peep_o(self.c) o = sigmoid.sigmoid(o + peep_in_o) self.h = o * tanh.tanh(self.c) return self.h
Example #25
Source File: n_step_rnn.py From chainer with MIT License | 5 votes |
def forward(self, hx, xs, **kwargs): """forward(self, hx, xs) Calculates all of the hidden states and the cell states. Args: hx (:class:`~chainer.Variable` or None): Initial hidden states. If ``None`` is specified zero-vector is used. Its shape is ``(S, B, N)`` for uni-directional RNN and ``(2S, B, N)`` for bi-directional RNN where ``S`` is the number of layers and is equal to ``n_layers``, ``B`` is the mini-batch size, and ``N`` is the dimension of the hidden units. xs (list of :class:`~chainer.Variable`): List of input sequences. Each element ``xs[i]`` is a :class:`chainer.Variable` holding a sequence. Its shape is ``(L_i, I)``, where ``L_i`` is the length of a sequence for batch ``i``, and ``I`` is the size of the input and is equal to ``in_size``. Returns: tuple: This function returns a tuple containing two elements, ``hy`` and ``ys``. - ``hy`` is an updated hidden states whose shape is same as ``hx``. - ``ys`` is a list of :class:`~chainer.Variable` . Each element ``ys[i]`` holds hidden states of the last layer corresponding to an input ``xs[i]``. Its shape is ``(L_i, N)`` for uni-directional RNN and ``(L_i, 2N)`` for bi-directional RNN where ``L_i`` is the length of a sequence for batch ``i``, and ``N`` is size of hidden units. """ (hy,), ys = self._call([hx], xs, **kwargs) return hy, ys
Example #26
Source File: reporter.py From chainer with MIT License | 5 votes |
def report(self, values, observer=None): """Reports observed values. The values are written with the key, prefixed by the name of the observer object if given. .. note:: If a value is of type :class:`~chainer.Variable`, the variable is copied without preserving the computational graph and the new variable object purged from the graph is stored to the observer. This behavior can be changed by setting ``chainer.config.keep_graph_on_report`` to ``True``. Args: values (dict): Dictionary of observed values. observer: Observer object. Its object ID is used to retrieve the observer name, which is used as the prefix of the registration name of the observed value. """ if not configuration.config.keep_graph_on_report: values = {k: _copy_variable(v) for k, v in six.iteritems(values)} if observer is not None: observer_id = id(observer) if observer_id not in self._observer_names: raise KeyError( 'Given observer is not registered to the reporter.') observer_name = self._observer_names[observer_id] for key, value in six.iteritems(values): name = '%s/%s' % (observer_name, key) self.observation[name] = value else: self.observation.update(values)
Example #27
Source File: n_step_rnn.py From chainer with MIT License | 5 votes |
def init_hx(self, xs): shape = (self.n_layers * self.direction, len(xs), self.out_size) with chainer.using_device(self.device): hx = variable.Variable(self.xp.zeros(shape, dtype=xs[0].dtype)) return hx
Example #28
Source File: ln_lstm.py From knmt with GNU General Public License v3.0 | 5 votes |
def __call__(self, c, h, x): """Returns new cell state and updated output of LSTM. Args: c (~chainer.Variable): Cell states of LSTM units. h (~chainer.Variable): Output at the previous time step. x (~chainer.Variable): A new batch from the input sequence. Returns: tuple of ~chainer.Variable: Returns ``(c_new, h_new)``, where ``c_new`` represents new cell state, and ``h_new`` is updated output of LSTM units. """ if self.upward.has_uninitialized_params: in_size = x.size // x.shape[0] with cuda.get_device_from_id(self._device_id): self.upward._initialize_params(in_size) self._initialize_params() lstm_in = self.upward_ln(self.upward(x)) if h is not None: lstm_in += self.lateral_ln(self.lateral(h)) if c is None: xp = self.xp with cuda.get_device_from_id(self._device_id): c = variable.Variable( xp.zeros((x.shape[0], self.state_size), dtype=x.dtype), volatile='auto') c_next, ungated_h, o_gate = lstm_with_ungated_output(c, lstm_in) h = o_gate * self.output_ln(ungated_h) return c_next, h
Example #29
Source File: function.py From chainer with MIT License | 5 votes |
def force_backprop_mode(): """Make a context manager which enables back-propagation. When you want to enable back-propagation in :func:`no_backprop_mode`, call this method. A :class:`~chainer.Variable` created in this context always has a computational graph unless overridden by deeper contexts. If you call this method outside of :func:`no_backprop_mode` context, it changes nothing. In the following example, ``y`` has a computational graph and calling :func:`~chainer.Variable.backward` on ``y`` will compute and accumulate the gradients of the variables in the graph, in this case only ``x``. >>> x = chainer.Variable(np.array([1,], np.float32)) >>> with chainer.no_backprop_mode(): ... with chainer.force_backprop_mode(): ... y = x + 1 >>> y.backward() >>> x.grad array([1.], dtype=float32) .. note:: ``chainer.force_backprop_mode()`` implicitly applies ChainerX's counterpart :func:`chainerx.force_backprop_mode()`, but not vice versa. Also, setting ``enable_backprop`` :ref:`configuration <configuration>` does not affect ChainerX. .. seealso:: See :func:`chainer.no_backprop_mode` for details on disabled back-propagation mode. """ c = configuration.using_config('enable_backprop', True) if chainerx.is_available(): return _BackpropModeContext((c, chainerx.force_backprop_mode())) return _BackpropModeContext((c,))
Example #30
Source File: lstm.py From chainer with MIT License | 5 votes |
def forward(self, c, h, x): """Returns new cell state and updated output of LSTM. Args: c (~chainer.Variable): Cell states of LSTM units. h (~chainer.Variable): Output at the previous time step. x (~chainer.Variable): A new batch from the input sequence. Returns: tuple of ~chainer.Variable: Returns ``(c_new, h_new)``, where ``c_new`` represents new cell state, and ``h_new`` is updated output of LSTM units. """ if self.upward.W.array is None: in_size = x.size // x.shape[0] with chainer.using_device(self.device): self.upward._initialize_params(in_size) self._initialize_params() lstm_in = self.upward(x) if h is not None: lstm_in += self.lateral(h) if c is None: xp = self.xp with chainer.using_device(self.device): c = variable.Variable( xp.zeros((x.shape[0], self.state_size), dtype=x.dtype)) return lstm.lstm(c, lstm_in)