趣解TensorFlow之入门篇
🤔 TensorFlow 简介
TensorFlow 是一个用来搭建和训练神经网络的 Python 工具包,谷歌开发的,专门用来搞人工智能的。
它可以帮你干这些事:
- 训练模型识别图片
- 搭建聊天机器人
- 做语音识别
- 进行预测、分类、翻译……
如果你想学 AI、深度学习,TensorFlow 就是你绕不开的框架之一。
😎 TensorFlow 的核心概念
🥱Tensor 概念
Tensor(张量)是 TensorFlow 名字的来源,它是:
- 一维张量 = 向量(比如
[1, 2, 3]
) - 二维张量 = 矩阵(比如
[[1,2],[3,4]]
) - 三维、四维…… = 多维数组
用 Python/Numpy 的话说就是:Tensor = 高维数组
TensorFlow 就是围绕 “Tensor 的流动” 来设计的:把 Tensor 放进图里,经过各种操作,最后输出结果。
🥱Graph概念
TensorFlow 早期版本是构建一个静态“计算图”:
- 每个操作(加减乘除、神经网络层)是一个“节点”
- 节点之间的数据(Tensor)是“边”
就像一个拼装好的电路板,数据流从输入进来,经过图中一系列变换,输出结果。
在 2.x 版本之后,TensorFlow 更偏向“动态图”(即时执行),类似 PyTorch,更灵活了。
🏋️ 安装 TensorFlow
pip install tensorflow
安装完之后你就可以在 Python 里导入:
import tensorflow as tf
print(tf.__version__)
🔍 示例 1:最简单的神经网络
我们用 TensorFlow 搭一个最基础的模型来识别手写数字(MNIST 数据集)
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist# 加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train / 255.0
x_test = x_test / 255.0# 建立模型
model = models.Sequential([layers.Flatten(input_shape=(28, 28)), # 把28x28图片拉平为784维向量layers.Dense(128, activation='relu'), # 第一层,全连接,128个神经元layers.Dropout(0.2), # 丢弃层,防止过拟合layers.Dense(10, activation='softmax') # 输出层,10类
])# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=5)# 测试模型
model.evaluate(x_test, y_test)
输出如下:
Epoch 1/5
60000/60000 [==============================] - 5s 83us/sample - loss: 0.3 - accuracy: 0.91
...
是不是很简单?几行代码就能搭建出一个基本的分类神经网络!
🔍 示例 2:自定义神经网络
我们自己写一个带两个隐藏层的网络:
model = tf.keras.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(784,)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
训练方法与上面完全一样。
🔍 示例 3:保存和加载模型
训练好了想保存:
model.save('my_model.h5')
下次直接加载:
model = tf.keras.models.load_model('my_model.h5')
🔍 示例 4:预测新数据
pred = model.predict(x_test[0:1]) # 对第一张图片做预测
print(pred)
print("预测结果:", tf.argmax(pred, axis=1).numpy())
🔍 示例 5:自定义训练循环
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()for epoch in range(5):for i in range(len(x_train)):with tf.GradientTape() as tape:x = x_train[i:i+1]y = y_train[i:i+1]pred = model(x)loss = loss_fn(y, pred)grads = tape.gradient(loss, model.trainable_weights)optimizer.apply_gradients(zip(grads, model.trainable_weights))
😁优势总结
特性 | 描述 |
---|---|
跨平台 | 可以在 CPU、GPU、以及TPU(AI) 上运行 |
自动求导 | 计算导数超方便 |
可视化 | TensorBoard 可以图形化训练过程 |
模型部署 | TF Serving / Lite / JS 都支持 |
社区活跃 | 文档多、教程多、开源项目多 |
🤔 学习建议
- 学会基本的 Python 和 Numpy
- 理解神经网络基础概念(激活函数、损失函数、前向/反向传播)
- 看 TensorFlow 官方教程:https://www.tensorflow.org/tutorials
- B 站、YouTube 关键词搜索:“TensorFlow 入门实战”
- 多模仿、多改代码、多练习!
🫡 推荐资料
- 《Deep Learning with Python(Keras作者写的)》
- TensorFlow 官方教程:https://www.tensorflow.org/tutorials
- 中文版《动手学深度学习》配合 tf.keras 使用
- GitHub 上的 tensorflow/models 项目
😍 最后的话
TensorFlow 虽然刚开始看起来有点“重量级”,但一旦掌握基本套路,建模效率很高,非常适合搞工业级项目。
不怕不会,就怕不写。