Tensorflow揭秘
https://www.bilibili.com/video/av64970827/?p=7
tf2.0主要使用tf.keras api来构建模型,主要包括如下几个部分

一、Layers
如下是一些特性,比如可以运行在eager 或 graph模式,支持type checking等。

不支持的特性
没听太懂(挖坑)

一个典型的basic layer

一个更实用的写法,不需要在初始化时定义输入维度,当第一次call时,会在build时根据input_shape,add_weight来构建权重,
以后call时就可以reuse weights了。

Layer中可以有non-trainable weights,比如bn层

layer也可以nested化

一个训练实例,没有了session,graph,比tf1简单顺眼多了

定义了一个额外的损失,可以通过model.losses得到。


layers serializable
以字典的形式保存模型,不保留权重

call中有个参数train

二、Model
和nested layer相比,只需要继承的类更改一下。不过增加了更多功能,compile,fit,evaluate,save。

在实际使用时,layer通常表示某层或某个block,model表示一个完整的模型(需要train,predict等)

fit,evaluate默认是graph execution(更快),也可以制定eager 模式

三、Functional Models
一种更简单直接的方式(下图中的x是某种输入,不是layer) ,更适用于使用者,而不是开发者

没看懂_keras_histor的作用(挖坑)

Function API 包括如下特性

(1)check
通过InputSpec来进行检查,在init中会给一个简单的check,当第一次调用时,在build中,会进行更详细的check。

(2)save
支持跨平台。

(3)plot model

(4)设计到nlp,不懂

(5)使用dynamic layers
如对bn层,train 和Inference时的不同处理



浙公网安备 33010602011771号