【Tensorflow2.0】3、 tf.keras介绍

2024-05-30 18:32
文章标签 介绍 tf keras tensorflow2.0

本文主要是介绍【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),函数式编程
8、(soon)即将支持混合精度mix precision:
  • 将来会内建混合精度

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秒)

最长用的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介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1016698

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题