IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> TensorFlow 2 快速入门 -> 正文阅读

[人工智能]TensorFlow 2 快速入门


1、简介


TensorFlow 2发布已经接近2年时间,不仅继承了Keras快速上手和易于使用的特性,同时还扩展了原有Keras所不支持的分布式训练的特性。并且TensorFlow 2是真正整合了TensorFlow生态的其它组件,例如TensorFlow Serving、TensorFlow Lite等,这些可以帮助我们提升生产级AI的稳定性和可维护性。并且借助官方文档进行学习可以更加快速地进行学习。

TensorFlow 2.0 简介


2、设计思想


2.1、TensorFlow与Pytorch

PyTorch 采用的是动态图机制 (Dynamic Computational Graph),而 Tensorflow 采用的是静态图机制 (Static Computational Graph)。

动态图是运算和搭建同时进行,也就是可以先计算前面的节点的值,再根据这些值搭建后面的计算图。优点是灵活,易调节,易调试。PyTorch 里的很多写法跟其他 Python 库的代码的使用方法是完全一致的,没有任何额外的学习成本。

静态图是先搭建图,然后再输入数据进行运算。优点是高效,因为静态计算是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。但是不灵活。TensorFlow 每次运行的时候图都是一样的,是不能够改变的,所以不能直接使用 Python 的 while 循环语句,需要使用辅助函数 tf.while_loop 写成 TensorFlow 内部的形式。


2.2、TensorFlow 2 新特性

3大设计原则:简化概念,海纳百川,构建生态

  • 简化概念:是相比于TensorFlow 1来说的,TensorFlow 1关注于模型的性能问题,可以自由定义各种算子与模型,牺牲了易用性,2相较于1砍掉了大量的API。
  • 海纳百川:吸收了Keras以及Numpy等简单操作的特性。
  • 构建生态:TF2的生态很丰富,例如,训练可视化的TensorBoard,部署到云端的TF Serving,到边缘设备的TF Lite。

2.3、TensorFlow 2 核心模块

  • 数据处理模块 tf.data & tf.keras
    • 负责数据的管理。
    • 支持多种数据来源:本地文件、分布式文件系统、对象存储系统。
    • 支持多种数据格式。
    • tf.keras在分布式与高性能上有所提升
  • 分布式策略模块 tf.distribute
    • 用少量代码把原来的模型变成分布式训练的模型,提供许多的strategy,加速模型训练。
  • 模型序列化 saved model
    • 训练完成的模型通过模型保存模块可以保存成多种文件格式,并根据需求部署到不同设备上。

在这里插入图片描述


2.4、TensorFlow 2 vs. TensorFlow 1.x

可以从高层次API低层次灵活性进行比较

  • TensorFlow 1 最初考虑的可能是Google内部模型非常大,数据非常多,优先考虑性能问题,因此着重考虑分布式与性能的问题,它可以自由定义各种算子与模型。牺牲了易用性的特点。
  • TensorFlow 2在1的基础上,既吸收了Keras这些易用性的API,并且进一步扩展到分布式与底层,用tf.functuion去做高性能的提升,同时也保留了TensorFlow 1 的一些底层特性:自定义的Training Loop,自定义的函数方法……
  • TensorFlow2希望兼容架构层次API与模型训练API,或者是在易用性与灵活性之间做一个权衡。

3、快速上手:以Fasion MNIST为例


以下的学习基于Jupyter Lab,使用TensorFlow 2.2.0。

3.1、数据导入与使用

TensorFlow 2有3种加载数据的方法:List、Generator与文本文件

1、使用 tf.data.Dataset.from_tensor_slices 加载 List

  • 核心是把各种来源的数据装成一个数据集
  • tf.data.Dataset的后面就会接各种各样的方法
    在这里插入图片描述

2、使用 tf.data.Dataset.from_generator 加载 Generator

  • 加载Python生成器里面的数据
  • TensorShape这么一个格式描述生成器生成出来的数据的张量形状
  • 生成器最终生成一个函数赋予了Dataset
  • 最终使用dataset的take方法调用了3次生成器
  • 适用于大批量数据集,可以一次次一批批加载数据
    在这里插入图片描述

3、使用 tf.data.TextLineDataset 加载文本

  • 专门为文本文件设计的数据集格式

3.2、模型管理

简单演示构建用于训练MNIST的神经网络,定义一个简单的全连接神经网络进行分类,来展示如何构建网络模型。


1、模型定义

在TensorFlow 2 中定义模型有两种方式,1种是Sequential,另一种是Functional API 。

(1) Sequential

  • Sequential核心思路:一层层往下叠加的序列的模型。
  • 最后的Dense(10)需要激活,否则无法去做任何分类,因此通常会在FC的最后一层添加一个softmax作为分类器的输出。
    在这里插入图片描述

(2) Functional API
与Sequential方式定义模型的差别在定义模型输入的时候,前者更为清晰简洁,后者更为自由与方便。
在这里插入图片描述

2、模型预览

  • 使用model.summary打印模型
    在这里插入图片描述

3、可视化模型结构

  • 使用plot_model
  • tf.keras.utils.plot_model(model, model.name+'.png', show_shapes=True,show_layer_names=True)
  • show_shapes可以显示数据形状,show_layer_names可以显示每层的名字。
  • 其中None可以理解为占位符,是每一批数据的个数。
    在这里插入图片描述

4、训练与评估模型

  • 预设超参数:model.compile ,参数为优化器,损失函数,关注的优化指标
  • 训练: model.fit,参数为训练集图片,训练集标签,训练次数
  • 评估:model.evaluate,参数为验证集图片,验证集标签

在这里插入图片描述

5、保存模型

1、保存为 SavedModel 格式模型

  • 保存的SavedModel模型文件格式,variables里面放了模型的参数,asserts里面放置自定义加载的附加的预置文件。
    在这里插入图片描述

2、保存为Keras 的h5模型
在这里插入图片描述

3.3、使用TensorFlow2训练分类网络


1、Fashion MNIST 数据集介绍

  • Fashion MNIST 比MNIST的分类难度更大些,因为其特征不如手写数字明显,对分类器提出了新的挑战。
  • 10类,70000图片,大小为28*28
  • 一般网络在Fasioin MNIST上普遍会比MNIST低10个点
    在这里插入图片描述

2、数据集获取

使用tf.keras.datasets预置数据集获取Fasion MNIST
在这里插入图片描述

from tensorflow import keras
import tensorflow as tf
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()

3、可视化

使用matplotlib检查数据集下载情况
在这里插入图片描述

4、数据预处理

  • 确定分类类别
  • 图像像素归一化
  • 可视化检查数据集与标签是否对应

在这里插入图片描述
在这里插入图片描述

5、构建模型

构建简单的神经网络进行多分类
在这里插入图片描述

6、训练与评估

在这里插入图片描述

7、模型预测

  • 通过比较预测标签与真实标签,来判断模型是否预测准确。
  • 使用model.predict,可以进行同时推理多张图片,输出与类别数目相同长度的数组

在这里插入图片描述

8、可视化预测结果

  • 输入全部的prediction,然后以一个子图的形式去展现出当前预测的结果和它的置信度。

在这里插入图片描述


参考资料
极客时间《TensorFlow 2 项目进阶实战》

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:21:53  更:2021-09-02 11:22:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:31:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码