基礎神經網絡模塊類。
用法
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。