A Variable acts as a container for state. It holds a tensor value and can
be updated. With the JAX backend, variables are used to implement
"functionalization", the pattern of lifting stateful operations out of
a piece of computation to turn it into a stateless function.
Usage
keras_variable(
initializer,
shape = NULL,
dtype = NULL,
trainable = TRUE,
autocast = TRUE,
aggregation = "none",
name = NULL
)Arguments
- initializer
Initial value or callable for initialization. If a callable is used, it should take the arguments
shapeanddtype.- shape
Optional. Tuple for the variable's shape. Required if
initializeris a callable.- dtype
Optional. Data type of the variable. Defaults to the global float dtype type (
"float32"if never configured).- trainable
Optional. Boolean indicating if variable is trainable. Defaults to
TRUE.- autocast
Optional. Boolean indicating whether the variable supports autocasting. If
TRUE, the layer may first convert the variable to the compute data type when accessed. Defaults toTRUE.- aggregation
Optional string, one of
NULL,"none","mean","sum"or"only_first_replica"specifying how a distributed variable will be aggregated. This serves as a semantic annotation, to be taken into account by downstream backends or users. Defaults to"none".- name
Optional. A unique name for the variable. Automatically generated if not set.
Attributes
shape: The shape of the variable (tuple of integers).ndim: The number of dimensions of the variable (integer).dtype: The data type of the variable (string).trainable: Whether the variable is trainable (boolean).autocast: Whether the variable supports autocasting (boolean).aggregation: How a distributed variable will be aggregated (string).value: The current value of the variable (NumPy array or tensor).name: The name of the variable (string).path: The path of the variable within the Keras model or layer (string).
Examples
Initializing a Variable with a NumPy array:
initial_array <- array(1, c(3, 3))
variable_from_array <- keras_variable(initializer = initial_array)Using a Keras initializer to create a Variable:
variable_from_initializer <- keras_variable(
initializer = initializer_ones(),
shape = c(3, 3),
dtype = "float32"
)# To modify a subset of values
value <- variable_from_array$value
value@r[1,] <- 99
invisible(variable_from_array$assign(value))
variable_from_array## <Variable path=variable, shape=(3, 3), dtype=float64, value=[[99. 99. 99.]
## [ 0. 0. 0.]
## [ 0. 0. 0.]]>
Marking a Variable as non-trainable:
non_trainable_variable <- keras_variable(
initializer = array(1, c(3, 3)),
dtype = "float32",
trainable = FALSE
)