|
|
|
@ -24,56 +24,11 @@ from . import unique_name
|
|
|
|
|
|
|
|
|
|
__all__ = [
|
|
|
|
|
'Constant', 'Uniform', 'Normal', 'TruncatedNormal', 'Xavier', 'Bilinear',
|
|
|
|
|
'MSRA', 'force_init_on_cpu', 'init_on_cpu', 'ConstantInitializer',
|
|
|
|
|
'UniformInitializer', 'NormalInitializer', 'TruncatedNormalInitializer',
|
|
|
|
|
'XavierInitializer', 'BilinearInitializer', 'MSRAInitializer',
|
|
|
|
|
'NumpyArrayInitializer'
|
|
|
|
|
'MSRA', 'ConstantInitializer', 'UniformInitializer', 'NormalInitializer',
|
|
|
|
|
'TruncatedNormalInitializer', 'XavierInitializer', 'BilinearInitializer',
|
|
|
|
|
'MSRAInitializer', 'NumpyArrayInitializer'
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
_force_init_on_cpu_ = False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def force_init_on_cpu():
|
|
|
|
|
"""
|
|
|
|
|
The flag of whether force to init variables on CPU.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
bool: the state if we should force init on CPU.
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
import paddle.fluid as fluid
|
|
|
|
|
if fluid.initializer.force_init_on_cpu():
|
|
|
|
|
step = fluid.layers.create_global_var(
|
|
|
|
|
shape=[2,3], value=1.0, dtype='float32')
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
return _force_init_on_cpu_
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@signature_safe_contextmanager
|
|
|
|
|
def init_on_cpu():
|
|
|
|
|
"""
|
|
|
|
|
Force the variable to be inited on CPU.
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
.. code-block:: python
|
|
|
|
|
|
|
|
|
|
import paddle.fluid as fluid
|
|
|
|
|
with fluid.initializer.init_on_cpu():
|
|
|
|
|
step = fluid.layers.create_global_var(
|
|
|
|
|
shape=[2,3], value=1.0, dtype='float32')
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
global _force_init_on_cpu_
|
|
|
|
|
|
|
|
|
|
pre_state = force_init_on_cpu()
|
|
|
|
|
_force_init_on_cpu_ = True
|
|
|
|
|
yield
|
|
|
|
|
_force_init_on_cpu_ = pre_state
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Initializer(object):
|
|
|
|
|
"""Base class for variable initializers
|
|
|
|
@ -186,7 +141,7 @@ class ConstantInitializer(Initializer):
|
|
|
|
|
"shape": var.shape,
|
|
|
|
|
"dtype": int(out_dtype),
|
|
|
|
|
"value": float(self._value),
|
|
|
|
|
'force_cpu': self._force_cpu or force_init_on_cpu()
|
|
|
|
|
'force_cpu': self._force_cpu
|
|
|
|
|
},
|
|
|
|
|
stop_gradient=True)
|
|
|
|
|
|
|
|
|
|