本文主要是介绍【Tensorflow2.0】3、 tf.keras介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、keras结构概述
- 二、Layer 类说明
- Layer层可以执行的功能
- Layer不具有的功能
本文将介绍tf.kears API的使用方法以及它的实现方法,主要参考keras作者对keras的 介绍(需要科学上网)。包括:
- Keras Architecture keras的结构
- Layers 和 Models 两个类
- 函数式模型 functional models
- 函数式模型的特征 features to functional models
- 训练和推理 Training & Inference
- 损失函数和性能评价指标 losses & metrics
以上部分写英文是为了看tensorflow官网时方便对应中英文
一、keras结构概述
主要包括keras的子模块和类。
- Engine(模型定义和推理,model define & execution) 基本类:
-
- 基础类Layer:是定义各种layer的基础
-
- 基础类Network:定义网络结构
-
- 基础类Modle:Network+training/eval loops
-
- 基础类Sequential:序列模型是Model的一种
Layers: -
- 各种Layer的子类subclasses
Losses,Metrics: -
- 基础类Metric
-
- 基础类Loss
-
- 各种Metric & Loss的子类,可用于不同的需求
回调callbacks: -
- 基础类Callback
-
- 各种Callback的子类,可用于不同的需求
优化器Optimizers: -
- 基础类Optimizer
-
- 各种Optimizer的子类,可用于不同的需求
正则化Regularizers,Constraints -
以下主要说明Engine,Losses,Metrics,其它部分简单介绍。其中任何一个内容都可以讲好向章书的内容,所以我们只关注最重要的信息。
二、Layer 类说明
Layer层可以执行的功能
- 1、Computation from a batch of inputs to a batch of outputs
-
- Works in eager execution and graph execution
-
- Supports a training mode and an inference mode
-
- Supports masking(for time series and missing features)
Layer是keras API中的核心,是构建基它内容的基础,所以keras的所有内容基本上就是Layer。Layer有许多作有,所以内建了大量的features,它将作为一个容器来执行一些运算,把batch的输入数据转换成batch的输出。所有的内建层都支持eager execution和graph execution这两种模式,但用户自定义的层只支持eager模式,有些层只支持eager模式比如recursive layer,SEMs。另外每一层有两种状态训练状态和推理状态,比如dropout和batchnorm层,每一层会记忆timesteps和其它相关状态来选择切换状态,这种适用于sequence序列处理。
- 2、Manage state(trainable weights, non trainable weights)
-
- 管理那些参数是可训练的,那些是不可训练由人来定义的。
3、Tracks losses &metrics(can be created during ‘call’),and update than can be disabled on demand -
- 自动跟踪记录损失值和相关的评价指标
4、“Type checking” -
- 调用一个层的时候,自动检查数据类型是否正确
-
- 支持静态形状推理,可帮助用户检查数据形状是否正确
5、Can be frozen or unfrozen(for fine-tuning,transfer learning ,GANS) -
- 可以固化参数使其保持不变,或解固化。因化对于transfer learning之类的很有用。
6、Can be serialized/deserized(configuration-only) or saved/loaded(weight values) -
- 模型的保存与加载
7、可以用来构建模型(Functional APi),函数式编程 -
-
- 将来会内建混合精度
Layer不具有的功能
- 1、不支持计算梯度Gradients(under consideration)
-
- 层不支持反向传播和计算梯度,但开发人员正在考虑加上这个功能,加一个gradient的方法
2、不支持较底层的配置设置(low level api)\ -
- 比如设备配置(device placement)
3、不支持分布式计算 -
- 不包括特定的分布逻辑
4、只支持batchwish的计算 -
- 任何张量tensor不是以N 个样本开头和以N个样本结束,都不支持,也就是说要有N个samples输入,就要有N个sample输出,没有输入或没有输出的都不能用Layer
5、“Type checking ” -
- no datasets,no non-batch computation,no output-less or input-less processing
也就是说不能没有数据,不能是非batch的计算,不能少输出或少输入(看到7分16秒)
- no datasets,no non-batch computation,no output-less or input-less processing
最长用的layer
class Linear(tf.keras.layers.Layer):def __init__(self,units=32,input_dim=32):super(Linear,self).__init__()self.w=tf.Variable(initial_value=tf.random_normal_initializer()(shape=(input_dim,units)),trainable=True)self.b=tf.Variable(initial_value=tf.zeros_initializer()(shape=(units,)),trainable=True)def call(self,inputs):return tf.matmul(inputs,self.w)+self.bx = tf.ones((2,2))linear_layer = Linear(4,input_dim=2)
#linear_layer.trainable_weights==[w,b] #自动加入到trainable_weights里
y = linear_layer(x)
这篇关于【Tensorflow2.0】3、 tf.keras介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!