TensorFlow 简介
TensorFlow 是 Google 开发的开源深度学习框架,是目前最流行的机器学习平台之一。本教程将带你从零开始学习 TensorFlow 2.x。
什么是 TensorFlow?
TensorFlow 是一个端到端的机器学习平台,主要特点包括:
- 多维数组计算:类似 NumPy,支持张量运算
- GPU 加速:支持 GPU 和分布式计算
- 自动微分:内置自动求导功能
- 模型构建:提供 Keras 高级 API 用于快速构建模型
- 跨平台部署:支持服务器、移动端、Web 等多种平台
TensorFlow vs PyTorch
| 特性 | TensorFlow | PyTorch |
|---|---|---|
| 计算模式 | 静态图 + 动态图 | 动态图 |
| 学习曲线 | 较陡峭 | 相对平缓 |
| 部署支持 | TensorFlow Serving、Lite、JS | TorchServe、ONNX |
| 生产环境 | 成熟稳定 | 快速发展 |
| 社区活跃度 | 高 | 非常高 |
核心概念
张量(Tensor)
张量是 TensorFlow 中的基本数据单位,是多维数组的抽象表示。
import tensorflow as tf
# 创建张量
x = tf.constant([[1, 2], [3, 4]])
print(x)
# tf.Tensor(
# [[1 2]
# [3 4]], shape=(2, 2), dtype=int32)
# 张量的属性
print(x.shape) # (2, 2)
print(x.dtype) # <dtype: 'int32'>
计算图(Computational Graph)
TensorFlow 使用计算图来表示计算过程。在 TensorFlow 2.x 中,默认使用即时执行模式(Eager Execution),同时也支持通过 @tf.function 将函数编译为计算图以提升性能。
# 即时执行
x = tf.constant(3)
y = tf.constant(4)
print(x + y) # tf.Tensor(7, shape=(), dtype=int32)
# 使用计算图
@tf.function
def add(a, b):
return a + b
print(add(x, y)) # tf.Tensor(7, shape=(), dtype=int32)
变量(Variable)
变量用于存储模型的可训练参数,与普通张量不同,变量的值可以被修改。
# 创建变量
w = tf.Variable([[1.0, 2.0], [3.0, 4.0]])
# 修改变量值
w.assign([[5.0, 6.0], [7.0, 8.0]])
w.assign_add([[1.0, 1.0], [1.0, 1.0]])
print(w)
# <tf.Variable 'Variable:0' shape=(2, 2) dtype=float32, numpy=
# array([[6., 7.],
# [8., 9.]], dtype=float32)>
TensorFlow 2.x 的优势
相比 TensorFlow 1.x,2.x 版本有以下重大改进:
- 默认即时执行:代码可以像普通 Python 一样运行,便于调试
- 简化的 API:删除了大量过时的 API,统一使用 Keras
- 更好的错误提示:错误信息更加清晰易懂
- 更简单的模型保存:使用 SavedModel 格式,统一保存和加载方式
学习路线
本教程的学习路线如下:
- 环境搭建:安装 TensorFlow 和配置开发环境
- 张量基础:学习张量的创建、运算和操作
- 变量与自动微分:理解变量和梯度计算
- Keras 模型构建:使用 Sequential 和 Functional API 构建模型
- 模型训练:学习训练循环、损失函数和优化器
- 卷积神经网络:构建图像分类模型
- 模型保存与加载:保存训练好的模型
- 实战项目:完成实际项目练习
小结
本章介绍了 TensorFlow 的基本概念和特点。TensorFlow 是一个功能强大的深度学习框架,适合从研究到生产的各种场景。在接下来的章节中,我们将深入学习 TensorFlow 的各个方面。