tf.keras.Sequential详解

tf.keras.Sequential可以将一些按顺序堆叠的层组织成一个tf.keras.Model类型
有时会见到一些代码用tf.keras.models.Sequential, 这个与tf.keras.Sequential没有区别

model_1 = tf.keras.Sequential()
model_2 = tf.keras.models.Sequential()
print(type(model_1))
print(type(model_2))

两者创建的类型都是

tf.keras.Sequential()接收2个可选参数,分别是

  • 一个列表,列表里面每个原始是模型里面的一个层
  • 名称,用于给模型命名

使用时可以选择几种方式

  • 方式1:直接传入顺序排列的层组成的列表到tf.keras.Sequential(list_of_layers,name=‘my_model’)
  • 方式2:先不传入任何参数,使用model=tf.keras.Sequential()创建model,然后通过model.add(layer)的方式添加层
  • 方式1和2混搭

方式1举例

model = tf.keras.Sequential(
    [
        tf.keras.layers.Input(shape=(20,)),
        tf.keras.layers.Dense(10,activation='relu'),
        tf.keras.layers.Dense(2)
    ]
)

这种方式在使用的时候,要注意有没有些列表的那两个括号[]

方式2举例

model = tf.keras.Sequential()
model.add(tf.keras.layers.Input(shape=(20,)))
model.add(tf.keras.layers.Dense(10,activation='relu'))
model.add(tf.keras.layers.Dense(2))

每次add,感觉不是很方便,还是方式1比较好用。

其他

tf.keras.Sequential()创建的模型包含以下属性

  • distribute_strategy,模型是在哪种分布式策略下创建的(不太常用)
  • metrics_names,模型用于展示的指标名称,比如loss,acc这些
  • run_eagerly, 这个属性可以被设置。设置为True,表示模型一步一步地运行,类似python代码。默认是False, 以静态图的方式编译模型,计算效率更高。

tf.keras.Sequential()创建的模型包含以下方法

  • add,接收一个层的实例。例如上面例子中的model.add(tf.keras.layers.Dense(2))
  • compile,配置一下模型训练参数。
  • compute_loss,计算总的损失值,该函数可被重载,编写成自定义的损失计算方式。
  • compute_metrics,计算评价指标,也可被重载。
  • evaluate,测试模型并输出损失值和评价指标结果。
  • fit,训练模型
  • get_layer, 使用名称或索引获取一个层
  • get_weight_paths, 获取模型所有变量及其在模型中的路径
  • load_weights, 加载所有层的权重
  • make_predict_function, 创建一个用于推理的函数
  • make_test_function, 创建一个评测函数
  • make_train_function, 创建一个训练函数
  • pop, 去除模型的最后一层
  • predict, 生成输入样本的预测结果
  • predict_on_batch, 返回一个batch的预测结果
  • reset_metrics, 重置所有评价指标的状态
  • save, 存储模型
  • save_weights, 保存所有层的权重参数
  • summary, 打印网络的概括信息
  • test_on_batch, 测试一个batch的样本
  • to_json, 返回包含模型配置信息的json字符串
  • to_yaml, 返回包含模型配置信息的yaml字符串
  • train_on_batch, 运行一个batch的数据,并进行一次梯度值的更新

你可能感兴趣的:(tensorflow2使用,keras,深度学习,python)