View source on GitHub
|
Function object which memoizes the result of create_value_fn().
tfp.experimental.nn.util.CallOnce(
create_value_fn
)
This object is used to memoize the computation of some function. Upon first
call, the user provided create_value_fn is called and with the args/kwargs
provided to this object's __call__. On subsequent calls the previous result
is returned and regardless of the args/kwargs provided to this object's
__call__. To trigger a new evaluation, invoke this.reset() and to
identify if a new evaluation will execute (on-demand) invoke
this.is_unset(). For an example application of this object, see
help(tfp.experimental.nn.util.RandomVariable) and/or
help(tfp.util.DeferredTensor).
Args | |
|---|---|
create_value_fn
|
Python callable which takes any input args/kwargs and
returns a value to memoize. (The value is not presumed to be of any
particular type.)
|
Attributes | |
|---|---|
create_value_fn
|
|
name
|
Returns the name of this module as passed or determined in the ctor. |
name_scope
|
Returns a tf.name_scope instance for this class.
|
non_trainable_variables
|
Sequence of non-trainable variables owned by this module and its submodules. |
submodules
|
Sequence of all sub-modules.
Submodules are modules which are properties of this module, or found as properties of modules which are properties of this module (and so on).
|
trainable_variables
|
Sequence of trainable variables owned by this module and its submodules. |
value
|
|
variables
|
Sequence of variables owned by this module and its submodules. |
Methods
is_unset
is_unset()
Returns True if there is no memoized value and False otherwise.
reset
reset()
Removes memoized value which triggers re-eval on subsequent reads.
with_name_scope
@classmethodwith_name_scope( method )
Decorator to automatically enter the module name scope.
class MyModule(tf.Module):@tf.Module.with_name_scopedef __call__(self, x):if not hasattr(self, 'w'):self.w = tf.Variable(tf.random.normal([x.shape[1], 3]))return tf.matmul(x, self.w)
Using the above module would produce tf.Variables and tf.Tensors whose
names included the module name:
mod = MyModule()mod(tf.ones([1, 2]))<tf.Tensor: shape=(1, 3), dtype=float32, numpy=..., dtype=float32)>mod.w<tf.Variable 'my_module/Variable:0' shape=(2, 3) dtype=float32,numpy=..., dtype=float32)>
| Args | |
|---|---|
method
|
The method to wrap. |
| Returns | |
|---|---|
| The original method wrapped such that it enters the module's name scope. |
__call__
__call__(
*args, **kwargs
)
Return the memoized value.
View source on GitHub