TensorFlow 2 详解(tf生态系统、安装、内务管理、基本操作)

17 篇文章 3 订阅
2 篇文章 0 订阅

        本篇从TensorFlow理论基础起步,简单代码实例,全面整理TensorFlow入门操作。

目录

关于TensorFlow 2

TensorFlow生态系统

动态图机制

tf.data

Estimator

TensorFlow Lite

TensorFlow Hub 

TensorFlow Extended

TensorBoard

TensorFlow安装

TensorFlow基本操作

导入TensorFlow并查看

动态图检查GPU

声明Eager变量 

声明TensorFlow常量

创建tensor张量

张量形状重塑

张量与python变量的装换

计算张量大小

查看张量数据类型

张量基本运算规则

计算张量平方差 

计算平均值

随机初始化张量 

使用检查点保存恢复张量


关于TensorFlow 2

        TensorFlow诞生于2011 年,作为Google公司的一个内部且闭源的项目,当时被命名为DisBelief。DisBelief 是一个应用了深度学习神经网络的机器学习系统。该系统于 2015年11月日在 Apache 2.0 开源许可证下发布给开发者社区,并演变成 TensorFlow。TensorFlow 1.0.0 版本发布于2017年2月 11日。TensorFlow 2.0.0 Alpha 版本发布于 2019年3月6日的 TensorFlow 开发者峰会。期间及之后,大量的版本陆续发行,并包含了大量的新特性。


        TensorFlow 的名字来源于张量(tensor)。张量是向量和矩阵在更高维度上的推广。张量的秩为指定该张量的每个元素所需的索引数。标量(一个数字)是秩为1 的张量,向量是秩为 1 的张量,矩阵是秩为 2 的张量,三维数组是秩为 3 的张量。张量具有数据类型和形状(张量中的所有数据项必须具有相同的类型)。 

        四维张量(即秩为4)的一个例子是图像,举例来说,这四个维度可以是批次(batch)、高度(height)、宽度(width)和颜色(color)通道。

imagel = tf. zeros([15, 500, 300, 3])  # 批次、高度、宽度、颜色通道

        尽管 TensorFlow 可用于一般的数值计算领域,特别是机器学习,但它的主要研究和开发领域通常是深度神经网络 (Deep Neural Networks, DNN)的应用。其应用领域主要包括语音识别,如现在广泛使用的语音助手,基于文本的应用程序、语言翻译器、图像识别、外星球搜寻、癌症检测和诊断、时间序列应用程序等。

TensorFlow生态系统

动态图机制

        首先介绍 TensorFlow 中的动态图机制 (Eager Execution)。 TensorFlow最初需要构造一个由操作和张量组成的计算图,接下来,这些操作和张量必须在 Google 所称的会话中进行计算(称为声明式编程)。这是编写TensorFlow 程序的一种常见方法。然而,从具有研究形式的 1.5发行版开始,动态图机制开始生效,并从1.7发行版开始正式集成到 TensorFlow 中。其特性包括操作的即时执行,使张量可以像 NumPy数组一样被处理(称为命令式编程)。

tf.data

        tf.data 是一个 API,它允许用户从更简单、可重用的部分构建复杂的数据输人管道。其最高层次的抽象是Dataset,它既包含了张量嵌套结构的元素,也包含了作用于这些元素的转换计划。下面是有关 Dataset 的常见类:

  • FixedLengthRecordDataset:用来得到有固定长度记录的数据集,该数据集来自一个或者多个二进制文件。
  • TFRecordDataset:表示包含一个或多个TFRecord 文件的记录的数据集。
  • TextLineDataset:表示包含来自一个或多个文本文件的行的数据集。
  • tf. data. Iterator:表示 Dataset 迭代状态。

Estimator

        Estimator是一个高级 API,允许用户构建十分简化的机器学习程序,并负责训练、评估、预测和服务导出。TensorFlow. jis 是一组 API,允许用户使用底层的 JavaScript 线性代数库或其他高层 API构建和训练模型。借助于该 API,模型可在浏览器中被训练和运行。

TensorFlow Lite

        TensorFlow Lite是 TensorFlow 的轻量级版本,适用于移动和嵌人式设备。它由一个运行时解释器和一组实用程序组成。其初衷是,在功能更强大的机器上训练模型,然后使用实用程序将模型转换为.tflite 格式,进而可将模型加载到所选设备中。在撰写本书时,Tensor Flow Lite 用 C++ API来支持 Android 和 i0s,并且具有适用于 Android 的Java 包装器。

TensorFlow Hub 

        TensorFlow Hub 是一个库,旨在促进机器学习模型的可重用模块的发布、发现和使用。在这里,模块由 TensorFlow 网络结构及其权重组成。该模块可以通过迁移学习的方法在不同的任务中重用。其初衷是,在大型数据集上训练模型,然后为不同但相关的任务重用适当的模块。这种方法有许多优点,不仅可以使用更小的数据集训练模型,还可以改进泛化,显著加快训练速度。

TensorFlow Extended

        TensorFlow Extended(TFX)是一个基于 TensorFlow 的通用机器学习平台。迄今为止发布的开源库包括 TensorFlow Transform、Tensor FlowModel Analysis 和 TensorFlow Serving。

        tf.keras 是一个用Python 编写的高级神经网络 API,作为 Tensor Flow和其他多种张量工具的接口。tf.keras 支持快速原型设计,具有用户友好模块化和可扩展的特点。它支持卷积和循环网络,并且可以在 CPU 和 GPU上运行。Keras 是在 TensorFlow 2 中开发的首选 API。

TensorBoard

        TensorBoard 是一套可视化工具,支持对 TensorFlow 程序的理解、调试和优化,它同时兼容动态图和计算图执行环境。在模型训练期间,可以使用TensorBoard 进行各种可视化操作。

TensorFlow安装

(Linux)使用conda配置兼容TensorFlow和PyTorch的env环境_昊昊该干饭了的博客-CSDN博客_linux 进入tensorflow环境如果要想同时使用Tensorflow和pytorch,需将其安装在同一个环境下。自己在尝试很多次之后配置了一套兼容环境,在本环境下,使用TensorFlow的模型和pytorch的模型可以部署在统一系统架构上https://blog.csdn.net/qq_52213943/article/details/124617468

TensorFlow基本操作

导入TensorFlow并查看

import tensorflow as tf
print("TensorFlow version: {}".format(tf.__version__))
print("Eager execution is: {}".format(tf.executing_eagerly()))
print("Keras version: {}".format(tf.keras.__version__))

运行结果:

动态图检查GPU

var = tf.Variable([3, 3])

if tf.test.is_gpu_available():
    print('Running on GPU')
    print('GPU #0?')
    print(var.device.endswith('GPU:0'))
else:
    print('CPU')

 运行结果:

声明Eager变量 

t0 = 24 
# python变量

t1 = tf.Variable(42) 
# 0维张量

t2 = tf.Variable([ [ [0., 1., 2.], [3., 4., 5.] ], [ [6., 7., 8.], [9., 10., 11.] ] ])
# 三维张量

 运行结果:

声明TensorFlow常量

mol = tf.constant(42)
mol

 运行结果:

 

创建tensor张量

张量的形状可通过属性访问

t2 = tf.Variable([ [ [0., 1., 2.], [3., 4., 5.] ], [ [6., 7., 8.], [9., 10., 11.] ] ])
# tensor variable
print(t2.shape)

输出形状结果:

张量形状重塑

r1 = tf.reshape(t2,[2,6]) # 2 行 6 列
r2 = tf.reshape(t2,[1,12]) # 1 行 12 列

#取值不能变

运行结果:

张量与python变量的装换

print(t2.numpy())
#或者
print(t2[1, 0, 2].numpy())

 

计算张量大小

s = tf.size(input=t2).numpy()

查看张量数据类型

t3.dtype

#输出
tf.float32

张量基本运算规则

张量运算可通过重载运算符+、-、*、/ 实现

t2*t2

t4 = t2*4

计算张量平方差 

x = [1,3,5,7,11]
y = 5
s = tf.math.squared_difference(x, y)

计算平均值

tf.reduce_mean(input_tensor=numbers) 
#( 4. + 5. + 7. + 3.)/4 = 4.75

随机初始化张量 

# tf.random.normal()输出给定形状的张量 正态分布填充
tf.random.normal(shape = (3,2), mean=10, stddev=2, dtype=tf.float32, seed=None,  name=None)

# tf.random.uniform()输出给定形状的张量 上下边界最大最小值范围填充
tf.random.uniform(shape = (2,4),  minval=0, maxval=None, dtype=tf.float32, seed=None,  name=None)

使用检查点保存恢复张量

        后文详解,此方法可以保存张亮

variable = tf.Variable([[1,3,5,7],[11,13,17,19]])
checkpoint= tf.train.Checkpoint(var=variable)
save_path = checkpoint.save('./vars') #存在本路径下
variable.assign([[0,0,0,0],[0,0,0,0]])
variable

欢迎点赞、收藏、评论区交流,转载标明出处。

-----------------------------

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊昊该干饭了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值