基础神经网络模块类。
用法
tf.Module(
name=None
)
属性
-
name
返回在 ctor 中传递或确定的此模块的名称。注意:这与包含父模块名称的
self.name_scope.name
不同。 -
name_scope
返回此类的tf.name_scope
实例。 -
non_trainable_variables
此模块及其子模块拥有的不可训练变量的序列。注意:此方法使用反射来查找当前实例和子模块上的变量。出于性能原因,如果您不希望返回值发生变化,您可能希望缓存调用此方法的结果。
-
submodules
所有sub-modules的序列。子模块是作为该模块的属性的模块,或者作为作为该模块的属性的模块的属性找到的(等等)。
a = tf.Module() b = tf.Module() c = tf.Module() a.b = b b.c = c list(a.submodules) == [b, c] True list(b.submodules) == [c] True list(c.submodules) == [] True
-
trainable_variables
此模块及其子模块拥有的可训练变量序列。注意:此方法使用反射来查找当前实例和子模块上的变量。出于性能原因,如果您不希望返回值发生变化,您可能希望缓存调用此方法的结果。
-
variables
此模块及其子模块拥有的变量序列。注意:此方法使用反射来查找当前实例和子模块上的变量。出于性能原因,如果您不希望返回值发生变化,您可能希望缓存调用此方法的结果。
模块是 tf.Variable
s、其他 tf.Module
s 和适用于用户输入的函数的命名容器。例如,神经网络中的密集层可以实现为 tf.Module
:
class Dense(tf.Module):
def __init__(self, input_dim, output_size, name=None):
super(Dense, self).__init__(name=name)
self.w = tf.Variable(
tf.random.normal([input_dim, output_size]), name='w')
self.b = tf.Variable(tf.zeros([output_size]), name='b')
def __call__(self, x):
y = tf.matmul(x, self.w) + self.b
return tf.nn.relu(y)
您可以按预期使用 Dense 层:
d = Dense(input_dim=3, output_size=2)
d(tf.ones([1, 3]))
<tf.Tensor:shape=(1, 2), dtype=float32, numpy=..., dtype=float32)>
通过继承 tf.Module
而不是 object
,可以使用 variables
, trainable_variables
或 submodules
属性收集分配给对象属性的任何 tf.Variable
或 tf.Module
实例:
d.variables
(<tf.Variable 'b:0' shape=(2,) dtype=float32, numpy=...,
dtype=float32)>,
<tf.Variable 'w:0' shape=(3, 2) dtype=float32, numpy=..., dtype=float32)>)
tf.Module
的子类也可以利用 _flatten
方法,该方法可用于实现任何其他类型的跟踪。
所有tf.Module
类都有一个关联的tf.name_scope
,可用于对 TensorBoard 中的操作进行分组,并为有助于调试的变量名称创建层次结构。我们建议在创建嵌套子模块/参数时使用名称范围,或者用于您可能希望在 TensorBoard 中检查其图形的前向方法。您可以使用 with self.name_scope:
显式输入名称范围,也可以使用 @tf.Module.with_name_scope
注释方法(除了 __init__
)。
class MLP(tf.Module):
def __init__(self, input_size, sizes, name=None):
super(MLP, self).__init__(name=name)
self.layers = []
with self.name_scope:
for size in sizes:
self.layers.append(Dense(input_dim=input_size, output_size=size))
input_size = size
@tf.Module.with_name_scope
def __call__(self, x):
for layer in self.layers:
x = layer(x)
return x
module = MLP(input_size=5, sizes=[5, 5])
module.variables
(<tf.Variable 'mlp/b:0' shape=(5,) dtype=float32, numpy=..., dtype=float32)>,
<tf.Variable 'mlp/w:0' shape=(5, 5) dtype=float32, numpy=...,
dtype=float32)>,
<tf.Variable 'mlp/b:0' shape=(5,) dtype=float32, numpy=..., dtype=float32)>,
<tf.Variable 'mlp/w:0' shape=(5, 5) dtype=float32, numpy=...,
dtype=float32)>)
相关用法
- Python tf.Module.with_name_scope用法及代码示例
- Python tf.compat.v1.distributions.Multinomial.stddev用法及代码示例
- Python tf.compat.v1.distribute.MirroredStrategy.experimental_distribute_dataset用法及代码示例
- Python tf.compat.v1.data.TFRecordDataset.interleave用法及代码示例
- Python tf.summary.scalar用法及代码示例
- Python tf.linalg.LinearOperatorFullMatrix.matvec用法及代码示例
- Python tf.linalg.LinearOperatorToeplitz.solve用法及代码示例
- Python tf.raw_ops.TPUReplicatedInput用法及代码示例
- Python tf.raw_ops.Bitcast用法及代码示例
- Python tf.compat.v1.distributions.Bernoulli.cross_entropy用法及代码示例
- Python tf.compat.v1.Variable.eval用法及代码示例
- Python tf.compat.v1.train.FtrlOptimizer.compute_gradients用法及代码示例
- Python tf.distribute.OneDeviceStrategy.experimental_distribute_values_from_function用法及代码示例
- Python tf.math.special.fresnel_cos用法及代码示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代码示例
- Python tf.compat.v1.layers.conv3d用法及代码示例
- Python tf.Variable.__lt__用法及代码示例
- Python tf.keras.metrics.Mean.merge_state用法及代码示例
- Python tf.keras.layers.InputLayer用法及代码示例
- Python tf.compat.v1.strings.length用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.Module。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。