tf.keras.Sequential

概述

顺序模型,是多个网络层的线性堆叠

继承tf.keras.Model类

官方文档:
https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/Sequential

属性

layers

添加的图层列表
层可以是:Dense类

添加的例子:
model=tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
使用例子:
history=model.fit(parent_height,son_height,epochs=500)
print(model.layers[0].get_weights())

当有m个神经元,n个输入值时,返回n行m列数组

主要方法

初始化

__init__(
    layers=None,
    name=None
)
参数
  • layers:要添加的层对象,list类型
  • name:名字

add()

添加层

add(layer)
参数
  • layer:层对象

summary()

显示摘要信息

compile()

编译,配置模型用于训练

详见父类的 compile()
https://www.malaoshi.top/show_1EF4BCMB2wb1.html

predict()

预测。模型训练好后,进行预测

predict(
    x,
    batch_size=None,
    verbose=0,
    steps=None,
    callbacks=None,
    max_queue_size=10,
    workers=1,
    use_multiprocessing=False
)
参数说明:
  • x:输入样本,类型:numpy数组,TensorFlow 张量等
返回值
  • Numpy数组

evaluate()

对 测试数据 进行评测,返回 损失值 和 度量值

度量值:在compile()的metrics中设置

evaluate(
    x=None,
    y=None,
    batch_size=None,
    verbose=1,
    sample_weight=None,
    steps=None,
    callbacks=None,
    max_queue_size=10,
    workers=1,
    use_multiprocessing=False
)
参数说明:
  • x:样本特征数据
  • y:与样本对应的目标数据
返回:

损失值 和 准确率

例子:

model.evaluate(test_ds)

传入测试数据集

fit()

进行训练

fit(
    x=None,
    y=None,
    batch_size=None,
    epochs=1,
    verbose=1,
    callbacks=None,
    validation_split=0.0,
    validation_data=None,
    shuffle=True,
    class_weight=None,
    sample_weight=None,
    initial_epoch=0,
    steps_per_epoch=None,
    validation_steps=None,
    validation_freq=1,
    max_queue_size=10,
    workers=1,
    use_multiprocessing=False,
    **kwargs
)
参数说明
  • x:输入数据,类型:numpy数组、TensorFlow张量等

  • y:目标数据,类型:numpy数组、TensorFlow张量等

  • batch_size:整数,默认值32,每训练 batch_size 个的样本,就计算一次梯度下降,使目标函数优化一步。

  • epochs:训练的次数

  • steps_per_epoch:整数或None,一个epoch包含的步数(每一步是一个batch的数据送入),当使用如TensorFlow数据Tensor之类的输入张量进行训练时,None代表自动分割,即:数据集样本数/batch样本数
    例如:有100张图片的dataset,通过dataset.batch(50)设置批次大小为50,则steps_per_epoch值为2
    注意: 在使用Dataset时,由于Dataset无法获取内部数据的数量,所以必须指定该参数

  • validation_steps: 仅当steps_per_epoch被指定时有用,在验证集上的step总数,验证集样本数/batch样本数
    注意: 在使用Dataset时,由于Dataset无法获取内部数据的数量,所以必须指定该参数

  • validation_data:形式为(X,y)或(X,y,sample_weights)的tuple,是指定的验证集。此参数将覆盖validation_spilt

  • shuffle:布尔值,表示是否在训练过程中每个epoch前随机打乱输入样本的顺序

  • verbose:0为不在标准输出流输出日志信息,1为输出进度条记录,2为每个epoch输出一行记录

  • validation_split:0~1之间的浮点数,用来指定训练集的一定比例数据作为验证集。验证集将不参与训练,在每个epoch结束后测试模型指标,如损失函数、精确度等。
    注意: 先执行validation_split ,再执行 shuffle ,因此如果数据集是有序的,需要先手工打乱再指定validation_split,否则可能会出现验证集样本不均匀。
    注意: 对训练集 类型 有要求,慎用

  • callbacks:点击参见

返回值

save()

详见tf.keras.Model的save()方法:
https://www.malaoshi.top/show_1EF4BCMB2wb1.html

save_weights()

保存所有图层权重

基于自save()方法的save_format形参实现,以HDF5或TensorFlow格式保存

以HDF5格式保存时,权重文件具有:-(layer_names属性),字符串列表(模型层的有序名称)

save_weights(
    filepath,
    overwrite=True,
    save_format=None
)
参数:
  • filepath:保存文件路径。
  • overwrite:是否覆盖
  • save_format:“ tf”或“ h5”

load_weights()

加载权重

load_weights(
    filepath
)
参数:
  • filepath:加载的文件路径

to_json()

返回包含 模型 配置的JSON字符串

仅包含模型架构,但 没有权重,没有配置优化器

to_json()
返回值:
  • 返回包含网络配置的JSON字符串

通过下面函数重建模型keras.models.model_from_json(json_string, custom_objects={})

案例1

在使用tf.data.Dataset读取文件,并进行训练时的一般步骤

# 打乱顺序
train_data2=train_data.shuffle(buffer_size=train_count)

# 无限重复,一般在shuffle()后调用
train_data2=train_data2.repeat()

BATCH_SIZE=32
# 改变数据形状,变成4维,第一个维度是图片数量
train_data2=train_data2.batch(BATCH_SIZE)

# 一般最后一个调用
train_data2=train_data2.prefetch(buffer_size=AUTOTUNE)

进行训练:

steps_per_epoch=train_count//BATCH_SIZE
validation_steps=test_count//BATCH_SIZE

history=model.fit(train_data2,epochs=15,steps_per_epoch=steps_per_epoch,validation_data=test_data2,validation_steps=validation_steps)

注意:
由于使用tf.data.Dateset做数据集,无法实现知道该数据集的 长度,需要在fit()方法中指定steps_per_epoch和validation_steps

否则训练时会提示Unknown:

感谢:
https://blog.csdn.net/Hodors/article/details/97498168
https://blog.csdn.net/hellocsz/article/details/88992039


原文出处:/show_1EF3otRbWcVI.html