Sequential将线性的层堆叠成一个层tf.keras.Model。
别名
tf.keras.models.Sequential
tf.keras.Sequential(
layers=None, name=None
)
Sequential 提供有关此模型的训练和推断功能。
例子:
# 可以选择,第一层可以接收' input_shape '参数
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(16,)))
# 然后,我们进行自动形状推断:
model.add(tf.keras.layers.Dense(4))
# 这与以下内容相同:
model = tf.keras.Sequential()
model.add(tf.keras.Input(shape=(16,)))
model.add(tf.keras.layers.Dense(8))
# 注意,您也可以省略' input_shape '参数。
# 在这种情况下,模型在第一次调用训练/评估方法之前没有任何权重(因为它还没有建立):
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(4))
# 模型权重尚未创建
# 然而,如果你指定了输入形状,当你添加图层时,模型就会不断地建立起来
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8, input_shape=(16,)))
model.add(tf.keras.layers.Dense(4))
len(model.weights)
4
# 当使用延迟构建模式(没有指定输入形状)时,你可以通过调用 build(batch_input_shape) 来手动构建模型:
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(4))
model.build((None, 16))
len(model.weights)
4
# 请注意,当使用延迟构建模式(没有指定输入形状)时,模型会在您第一次调用' fit '、' eval '或' predict '时构建,或者在一些输入数据上第一次调用模型时构建
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(8))
model.add(tf.keras.layers.Dense(1))
model.compile(optimizer='sgd', loss='mse')
# 这是第一次建立模型:
model.fit(x, y, batch_size=32, epochs=10)
变量 |
|
layers |
可选的添加到模型的层列表。 |
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']
方法:
add |
在层堆栈的顶部添加一个层实例 |
compile |
配置用于训练的模型 |
evaluate |
返回测试模式下模型的损失值和指标值 |
fit |
为固定数量的epoch(数据集上的迭代)训练模型 |
get_layer |
根据层的名称(唯一)或索引检索层 |
load_weights |
从TensorFlow或HDF5的权重文件中加载所有的层权重 |
make_predict_function |
创建一个执行推理步骤的函数/功能 |
make_test_function |
创建一个执行计算步骤的函数/功能 |
make_train_function |
创建一个执行训练步骤的函数/功能 |
pop |
删除模型中的最后一层 |
predict |
生成输入样本的输出预测 |
predict_on_batch |
返回单批的预测 |
predict_step |
推理步骤的逻辑 |
reset_metrics |
重置模型中所有指标的状态 |
reset_states |
|
save |
将模型保存到Tensorflow SavedModel或单个HDF5文件 |
save_weights |
保存所有层权重 |
summary |
打印网络的字符串总结 |
test_on_batch |
在一批上测试模型 |
test_step |
单计算步骤的逻辑 |
to_json |
返回包含网络配置的JSON字符串 |
to_yaml |
返回包含网络配置的yaml字符串 |
train_on_batch |
对单批数据运行一次梯度更新 |
train_step |
单训练步骤的逻辑 |