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时的不同处理

 

 

 

 

posted @ 2019-09-14 23:24  牧马人夏峥  阅读(207)  评论(0编辑  收藏  举报