View source on GitHub |
Initializer that generates tensors with constant values.
tf.compat.v1.keras.initializers.Constant(
value=0,
dtype=tf.dtypes.float32
,
verify_shape=False
)
Migrate to TF2
Although it is a legacy API endpoint, tf.compat.v1.constant_initializer
is compatible with eager execution and tf.function
.
To migrate to a non-legacy TF2 API, please use tf.constantinitializer
instead. The dtype
argument in <a href="../../../../../tf/compat/v1/keras/initializers/Constant#init_">tf.compat.v1.constantinitializer.init_()
does not exist in
tf.constantinitializer.init_()
. However, you can specify the dtype
in
__call__()
in both cases.
In the compat.v1
symbol, if verify_shape
is set to True
, an exception
is raised when initializing a variable with a different shape from
value
. If set to False
, value
is reshaped to initialize the variable
if necessary. An exception would only be raised when the number of
elements are different.
The verify_shape
argument is not supported in TF2. Using
tf.constant_initializer
is equivalent to setting verify_shape
to False
.
Structural Mapping to TF2
Before:
value = [0, 1, 2, 3, 4, 5, 6, 7]
initializer = tf.compat.v1.constant_initializer(
value=value,
dtype=tf.float32,
verify_shape=False)
variable = tf.Variable(initializer(shape=[2, 4]))
After:
value = [0, 1, 2, 3, 4, 5, 6, 7]
initializer = tf.constant_initializer(value=value)
tf.Variable(initializer(shape=[2, 4], dtype=tf.float32))
How to Map Arguments
TF1 Arg Name | TF2 Arg Name | Note |
---|---|---|
value |
value |
In constructor |
dtype |
dtype |
In __call__() method |
verify_shape |
Not Supported | Equivalent to set to False |
partition_info |
- | (__call__ arg in TF1) Not supported |
Before & After Usage Example
Before:
value = [1., 2., 3., 4.]
initializer = tf.compat.v1.constant_initializer(
value=value, dtype=tf.float32, verify_shape=True)
tf.Variable(initializer(shape=[2, 2])).numpy()
Traceback (most recent call last):
TypeError: Expected Tensor's shape: (2, 2), got (4,).
initializer = tf.compat.v1.constant_initializer(
value=value, dtype=tf.float32, verify_shape=False)
tf.Variable(initializer(shape=[2, 2])).numpy()
array([[1., 2.],
[3., 4.]], dtype=float32)
After:
value = [1., 2., 3., 4.]
initializer = tf.constant_initializer(value=value)
tf.Variable(initializer(shape=[2, 2], dtype=tf.float32)).numpy()
array([[1., 2.],
[3., 4.]], dtype=float32)
Description
The resulting tensor is populated with values of type dtype
, as
specified by arguments value
following the desired shape
of the
new tensor (see examples below).
The argument value
can be a constant value, or a list of values of type
dtype
. If value
is a list, then the length of the list must be less
than or equal to the number of elements implied by the desired shape of the
tensor. In the case where the total number of elements in value
is less
than the number of elements required by the tensor shape, the last element
in value
will be used to fill the remaining entries. If the total number of
elements in value
is greater than the number of elements required by the
tensor shape, the initializer will raise a ValueError
.
Raises | |
---|---|
TypeError
|
If the input value is not one of the expected types.
|
Examples | |
---|---|
The following example can be rewritten using a numpy.ndarray instead
of the value list, even reshaped, as shown in the two commented lines
below the value list initialization.
|
value = [0, 1, 2, 3, 4, 5, 6, 7]
init = tf.compat.v1.constant_initializer(value)
# fitting shape
with tf.compat.v1.Session():
x = tf.compat.v1.get_variable('x', shape=[2, 4], initializer=init)
x.initializer.run()
print(x.eval())
[[0. 1. 2. 3.]
[4. 5. 6. 7.]]
# Larger shape
with tf.compat.v1.Session():
y = tf.compat.v1.get_variable('y', shape=[3, 4], initializer=init)
y.initializer.run()
print(y.eval())
[[0. 1. 2. 3.]
[4. 5. 6. 7.]
[7. 7. 7. 7.]]
# Smaller shape
with tf.compat.v1.Session():
z = tf.compat.v1.get_variable('z', shape=[2, 3], initializer=init)
Traceback (most recent call last):
ValueError: Too many elements provided. Needed at most 6, but received 8
# Shape verification
init_verify = tf.compat.v1.constant_initializer(value, verify_shape=True)
with tf.compat.v1.Session():
u = tf.compat.v1.get_variable('u', shape=[3, 4],
initializer=init_verify)
Traceback (most recent call last):
TypeError: Expected Tensor's shape: (3, 4), got (8,).
Methods
from_config
@classmethod
from_config( config )
Instantiates an initializer from a configuration dictionary.
Example:
initializer = RandomUniform(-1, 1)
config = initializer.get_config()
initializer = RandomUniform.from_config(config)
Args | |
---|---|
config
|
A Python dictionary. It will typically be the output of
get_config .
|
Returns | |
---|---|
An Initializer instance. |
get_config
get_config()
Returns the configuration of the initializer as a JSON-serializable dict.
Returns | |
---|---|
A JSON-serializable Python dict. |
__call__
__call__(
shape, dtype=None, partition_info=None, verify_shape=None
)
Returns a tensor object initialized as specified by the initializer.
Args | |
---|---|
shape
|
Shape of the tensor. |
dtype
|
Optional dtype of the tensor. If not provided use the initializer dtype. |
partition_info
|
Optional information about the possible partitioning of a tensor. |