Model
将图层分组为具有训练和推理函数的对象。
用法
tf.keras.Model(
*args, **kwargs
)
参数
-
inputs
模型的输入:keras.Input
对象或keras.Input
对象列表。 -
outputs
模型的输出。请参阅下面的函数 API 示例。 -
name
字符串,模型的名称。
属性
-
distribute_strategy
该模型是在tf.distribute.Strategy
下创建的。 -
layers
-
metrics_names
返回所有输出的模型显示标签。注意:
metrics_names
仅在keras.Model
已根据实际数据进行训练/评估后可用。inputs = tf.keras.layers.Input(shape=(3,)) outputs = tf.keras.layers.Dense(2)(inputs) model = tf.keras.models.Model(inputs=inputs, outputs=outputs) model.compile(optimizer="Adam", loss="mse", metrics=["mae"]) model.metrics_names []
x = np.random.random((2, 3)) y = np.random.randint(0, 2, (2, 2)) model.fit(x, y) model.metrics_names ['loss', 'mae']
inputs = tf.keras.layers.Input(shape=(3,)) d = tf.keras.layers.Dense(2, name='out') output_1 = d(inputs) output_2 = d(inputs) model = tf.keras.models.Model( inputs=inputs, outputs=[output_1, output_2]) model.compile(optimizer="Adam", loss="mse", metrics=["mae", "acc"]) model.fit(x, (y, y)) model.metrics_names ['loss', 'out_loss', 'out_1_loss', 'out_mae', 'out_acc', 'out_1_mae', 'out_1_acc']
-
run_eagerly
指示模型是否应立即运行的可设置属性。即刻地运行意味着您的模型将像 Python 代码一样逐步运行。您的模型可能会运行得更慢,但通过单步调用各个层调用,您应该可以更轻松地对其进行调试。
默认情况下,我们将尝试将您的模型编译为静态图以提供最佳执行性能。
有两种方法可以实例化 Model
:
1 - 使用 "Functional API",从 Input
开始,链接层调用以指定模型的前向传递,最后从输入和输出创建模型:
import tensorflow as tf
inputs = tf.keras.Input(shape=(3,))
x = tf.keras.layers.Dense(4, activation=tf.nn.relu)(inputs)
outputs = tf.keras.layers.Dense(5, activation=tf.nn.softmax)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
注意:仅支持输入张量的字典、列表和元组。不支持嵌套输入(例如列表列表或 dict 的 dicts)。
也可以使用中间张量创建新的函数 API 模型。这使您能够快速提取模型的sub-components。
例子:
inputs = keras.Input(shape=(None, None, 3))
processed = keras.layers.RandomCrop(width=32, height=32)(inputs)
conv = keras.layers.Conv2D(filters=2, kernel_size=3)(processed)
pooling = keras.layers.GlobalAveragePooling2D()(conv)
feature = keras.layers.Dense(10)(pooling)
full_model = keras.Model(inputs, feature)
backbone = keras.Model(processed, conv)
activations = keras.Model(conv, feature)
请注意,backbone
和 activations
模型不是使用 keras.Input
对象创建的,而是使用源自 keras.Inputs
对象的张量创建的。在底层,这些模型将共享层和权重,以便用户可以训练 full_model
,并使用 backbone
或 activations
进行特征提取。模型的输入和输出也可以是张量的嵌套结构,创建的模型是标准的函数 API 模型,支持所有现有的 API。
2 - 通过继承 Model
类:在这种情况下,您应该在 __init__()
中定义您的层,并且您应该在 call()
中实现模型的前向传递。
import tensorflow as tf
class MyModel(tf.keras.Model):
def __init__(self):
super().__init__()
self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
def call(self, inputs):
x = self.dense1(inputs)
return self.dense2(x)
model = MyModel()
如果您将 Model
子类化,则可以选择在 call()
中有一个 training
参数(布尔值),您可以使用它来指定训练和推理中的不同行为:
import tensorflow as tf
class MyModel(tf.keras.Model):
def __init__(self):
super().__init__()
self.dense1 = tf.keras.layers.Dense(4, activation=tf.nn.relu)
self.dense2 = tf.keras.layers.Dense(5, activation=tf.nn.softmax)
self.dropout = tf.keras.layers.Dropout(0.5)
def call(self, inputs, training=False):
x = self.dense1(inputs)
if training:
x = self.dropout(x, training=training)
return self.dense2(x)
model = MyModel()
创建模型后,您可以使用 model.compile()
为模型配置损失和指标,使用 model.fit()
训练模型,或使用 model.predict()
使用模型进行预测。
相关用法
- Python tf.keras.Model.compute_loss用法及代码示例
- Python tf.keras.Model.reset_metrics用法及代码示例
- Python tf.keras.Model.compile用法及代码示例
- Python tf.keras.Model.save_spec用法及代码示例
- Python tf.keras.Model.save用法及代码示例
- Python tf.keras.Model.compute_metrics用法及代码示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代码示例
- Python tf.keras.metrics.Mean.merge_state用法及代码示例
- Python tf.keras.layers.InputLayer用法及代码示例
- Python tf.keras.callbacks.ReduceLROnPlateau用法及代码示例
- Python tf.keras.layers.serialize用法及代码示例
- Python tf.keras.metrics.Hinge用法及代码示例
- Python tf.keras.experimental.WideDeepModel.compute_loss用法及代码示例
- Python tf.keras.metrics.SparseCategoricalAccuracy.merge_state用法及代码示例
- Python tf.keras.metrics.RootMeanSquaredError用法及代码示例
- Python tf.keras.applications.resnet50.preprocess_input用法及代码示例
- Python tf.keras.metrics.SparseCategoricalCrossentropy.merge_state用法及代码示例
- Python tf.keras.metrics.sparse_categorical_accuracy用法及代码示例
- Python tf.keras.layers.Dropout用法及代码示例
- Python tf.keras.activations.softplus用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.Model。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。