Caffe2 - Python API
A deep learning, cross platform ML framework
parameter_info.py
1 from __future__ import absolute_import
2 from __future__ import division
3 from __future__ import print_function
4 from __future__ import unicode_literals
5 
6 from caffe2.python import core
7 
8 import numpy as np
9 
10 
11 class ParameterTags(object):
12  BIAS = 'BIAS'
13  WEIGHT = 'WEIGHT'
14  COMPUTED_PARAM = 'COMPUTED_PARAM'
15 
16 
17 class ParameterType(object):
18  DENSE = 'dense'
19  SPARSE = 'sparse'
20 
21 
22 class ParameterInfo(object):
23 
24  def __init__(
25  self, param_id, param, key=None, shape=None, length=None,
26  grad=None, blob_copy=None):
27  assert isinstance(param, core.BlobReference)
28  self.param_id = param_id
29  self.name = str(param)
30  self.blob = param
31  self.key = key
32  self.shape = shape
33  self.size = None if shape is None else np.prod(shape)
34  self.length = max(1, length if length is not None else 1)
35  self.grad = grad
36  self._cloned_init_net = None
37  # Optionally store equivalent copies of the blob
38  # in different precisions (i.e. half and float copies)
39  # stored as a dict of TensorProto.DataType -> BlobReference
40  self.blob_copy = blob_copy
41  # each param_info can have its own optimizer. It can be set within
42  # OptimizerContext (caffe2/python/optimizer.py)
43  self._optimizer = None
44 
45  def grad_type(self):
46  # self.grad could be None for model parallelism with parameter server
47  if self.grad is None:
48  return
49  return (
50  ParameterType.SPARSE if isinstance(self.grad, core.GradientSlice)
51  else ParameterType.DENSE)
52 
53  @property
54  def parameter(self):
55  return self.blob
56 
57  @property
58  def optimizer(self):
59  return self._optimizer
60 
61  @optimizer.setter
62  def optimizer(self, value):
63  assert self._optimizer is None, "optimizer has already been set"
64  self._optimizer = value
65 
66  def __str__(self):
67  return self.name
Module caffe2.python.optimizer.