前言
本文介绍最新版本的TensorFlow开发与应用,目前最新版本是TensorFlow2.5.0;首先简单介绍一下TensorFlow,然后安装TensorFlow2,最后使用TensorFlow开发。
一、简介
1.1)什么是TensorFlow?
TensorFlow 是一种用于表达机器学习算法的接口,也是一种用于执行此类算法的实现。它是端到端的方式进行机器学习开发,可以帮助我们开发和训练机器学习模型。
可用于表达各种各样的算法(包括用于深度神经网络模型的训练和推理算法),并且已用于进行研究以及将机器学习系统部署到计算机科学等十几个领域中,包括语音识别、计算机视觉、机器人、信息检索、自然语言处理、地理信息提取和计算药物发现。
我们可以使用 Sequential API 来使用TensorFlow,也可以使用Keras API 调用TensorFlow开源库。初学者推荐使用Keras API ,功能完善,便于开发。
在之前,TensorFlow1.x和Keras是分开的,但很多开发者觉得Keras API更友好,开发起来更高效,原生的TensorFlow API过于麻烦;后来TensorFlow2.x合并了Keras,在TensorFlow中能直接使用Keras API。
常见的应用开发:
TensorFlow 使用数据流计算图来表示计算、共享状态以及使该状态发生突变的运算。
参考:https://www.tensorflow.org/
1.2)TensorFlow 特点
- 轻松地构建模型:使用 Keras 等直观的高阶 API 轻松地构建和训练机器学习模型,该环境使我们能够快速迭代模型并轻松地调试模型。
- 支持多语言:支持Python、C 、Java等主流语言。
- 灵活开发:支持云端、本地、浏览器中或设备上轻松地训练和部署模型。
- 强大的研究经验:一个简单而灵活的架构,可以更快地将新想法从概念转化为代码,然后创建出先进的模型,并最终对外发布。
1.3)TensorFlow的发展历程
2011:DistBelief 2015.11:TensorFlow 0.5.0 2017.02:TensorFlow 1.0
- 高层API,将Keras库整合进其中
- 动态图机制:Eager Execution
- 面向移动智能终端:TensorFlow Lite
- 面向网页前端:TensorFlow.js
- 自动生成计算图:AutoGraph
2019:TensorFlow 2.0
ps:目前最新版本是TensorFlow2.5.0
1.4)TensorFlow2.0 框架
1、多种环境支持
- 可运行于移动设备、个人计算机、服务器、集群等
- 云端、本地、浏览器、移动设备、嵌入式设备
2、支持分布式模式
- TensorFlow会自动检测GPU和CPU,并充分利用它们并行、分布的执行
3、简洁高效
- 构建、训练、迭代模型:Eager Execution,Keras
- 部署阶段:转化为静态图,提高执行效率。
4、社区支持
1.5)TensorFlow 被使用情况
我们看看下图,使用 TensorFlow 的公司:
不得不说,有这么多巨头公司都使用,说明还是很不错的。
1.6)小结
TensorFlow 是一种在大规模和异构环境中运行的机器学习系统,它是端到端的方式进行机器学习开发,可以帮助我们开发和训练机器学习模型。
相关链接
TensorFlow 开源代码
TensorFlow博客
二、安装TensorFlow
pip方式安装
2.1)支持系统
- Ubuntu 16.04 或更高版本
- Windows 7 或更高版本
- macOS 10.12.6 (Sierra) 或更高版本(不支持 GPU)
- Raspbian 9.0 或更高版本
2.2)语言版本 Python 3.5~3.8
2.3)安装TensorFlow TensorFlow 2 软件包需要使用高于 19.0 的 pip
版本。
a.最新版本安装
代码语言:javascript复制pip install --upgrade pip
pip install tensorflow
如果安装过程慢,试试这添加:-i https://mirrors.aliyun.com/pypi/simple/ 指定阿里云的软件源地址,在国内较快,即:
pip install tensorflow -i https://mirrors.aliyun.com/pypi/simple/
b.指定版本安装
比如指定安装2.4.1版本的,执行如下命令:pip install tensorflow==2.4.1
查看是否安装成功
Docker方式安装
https://www.tensorflow.org/install/docker
源代码构建
官方已经很详细了,建议直接参考官方的教程。
Linux 和 macOS :https://www.tensorflow.org/install/source
Windows:https://www.tensorflow.org/install/source_windows
三、入门应用案例
这里我们使用经典数据集MNIST,识别手写数字(0,1,2,3,4,5,6,7,8,9);
代码语言:javascript复制# 导入 TensorFlow
import tensorflow as tf
# 加载入MNIS 数据集
mnist = tf.keras.datasets.mnist
# 加载的数据分位训练集、测试集;
# 由于图片的像素范围是0~255,我们把它变成0~1的范围,于是每张图像(训练集、测试集)都除以255。
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# 模型结构是各层堆叠起来的,使用搭建 tf.keras.Sequential模型即可。
# 选择训练选择优化器和损失函数。
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练并验证模型:
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
代码分析一下:
这个照片分类器的准确度已经达到 98%