Inner Workings#
There are three major new classes in AnalogVNN, which are as follows
PseudoParameters#
class:analogvnn.parameter.PseudoParameter.PseudoParameter()
PseudoParameters
is a subclass of Parameter
class of PyTorch.
PseudoParameters
class lets you convent a digital parameter to analog parameter by converting
the parameter of layer of Parameter
class to PseudoParameters
.
PseudoParameters
requires a ParameterizingModel to parameterize the parameters (weights and biases) of the
layer to get parameterized data
PyTorch’s ParameterizedParameters vs AnalogVNN’s PseudoParameters:
Similarity (Forward or Parameterizing the data):
Data → ParameterizingModel → Parameterized Data
Difference (Backward or Gradient Calculations):
ParameterizedParameters
Parameterized Data → ParameterizingModel → Data
PseudoParameters
Parameterized Data → Data
So, by using PseudoParameters
class the gradients of the parameter are calculated in such a way that
the ParameterizingModel was never present.
To convert parameters of a layer or model to use PseudoParameters, then use:
PseudoParameters.parameterize(Model, "parameter_name", transformation=ParameterizingModel)
OR
PseudoParameters.parametrize_module(Model, transformation=ParameterizingModel)
Forward and Backward Graphs#
Graph class:analogvnn.graph.ModelGraph.ModelGraph()
Forward Graph class:analogvnn.graph.ForwardGraph.ForwardGraph()
Backward Graph class:analogvnn.graph.BackwardGraph.BackwardGraph()
Documentation Coming Soon…