TensorFlow 基础概念
核心概念
张量(Tensor)
- 定义:TensorFlow 中的基本数据单位,类似于多维数组
- 属性:
- 形状(shape):张量的维度,如
(2, 3)表示 2行3列的矩阵 - 数据类型(dtype):如
tf.float32,tf.int32,tf.string等 - 阶(rank):张量的维度数量,0阶是标量,1阶是向量,2阶是矩阵
- 形状(shape):张量的维度,如
# 标量(0阶张量) scalar = tf.constant(3.0) # 向量(1阶张量) vector = tf.constant([1.0, 2.0, 3.0]) # 矩阵(2阶张量) matrix = tf.constant([[1, 2], [3, 4]])
计算图(Computational Graph)
- TensorFlow 1.x 的核心概念
- 定义计算的结构,不立即执行
- 包含节点(操作)和边(张量)
# TensorFlow 1.x 风格的计算图
# 注意:TensorFlow 2.x 默认使用 eager execution
graph = tf.Graph()
with graph.as_default():
a = tf.constant(5)
b = tf.constant(3)
c = a + b
即时执行(Eager Execution)
- TensorFlow 2.x 默认模式
- 操作立即执行并返回结果
- 更直观,便于调试
# TensorFlow 2.x 即时执行 x = tf.constant([[1, 2]]) y = tf.constant([[3], [4]]) z = tf.matmul(x, y) # 立即执行 print(z) # tf.Tensor([[11]], shape=(1, 1), dtype=int32)
主要组件
变量(Variable)
- 用于存储模型参数
- 训练过程中会被更新
- 需要显式初始化
# 创建变量 w = tf.Variable(tf.random.normal([3, 2])) # 权重矩阵 b = tf.Variable(tf.zeros([2])) # 偏置向量 # 更新变量 w.assign(w * 2) # 更新操作
操作(Operations)
- 计算图中的节点
- 可以是数学运算、数组操作等
# 常见操作 a = tf.constant([1, 2, 3]) b = tf.constant([4, 5, 6]) # 数学运算 add = tf.add(a, b) # 加法 mul = tf.multiply(a, b) # 乘法 # 神经网络相关操作 relu = tf.nn.relu(a) # ReLU激活函数 softmax = tf.nn.softmax(a) # Softmax函数
关键模块
Keras API
- TensorFlow 2.x 的高级API
- 简化了模型构建过程
from tensorflow import keras
from tensorflow.keras import layers
# 创建模型
model = keras.Sequential([
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')
])
tf.data
- 数据输入管道
- 高效处理大规模数据
# 创建数据集
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.batch(2).shuffle(100)
# 迭代数据
for batch in dataset:
print(batch)
自动微分(GradientTape)
- 自动计算梯度
- 用于自定义训练循环
# 使用 GradientTape 计算梯度
x = tf.Variable(3.0)
with tf.GradientTape() as tape:
y = x**2
# 计算梯度
dy_dx = tape.gradient(y, x) # dy/dx = 2x = 6
核心工作流程
模型构建
# 方法1:Sequential API
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])
# 方法2:Functional API
inputs = tf.keras.Input(shape=(32,))
x = tf.keras.layers.Dense(64, activation='relu')(inputs)
outputs = tf.keras.layers.Dense(10)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)
模型编译
model.compile(
optimizer='adam', # 优化器
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'] # 评估指标
)
模型训练
history = model.fit(
train_dataset, # 训练数据
epochs=5, # 训练轮数
validation_data=val_dataset # 验证数据
)
模型评估与预测
# 评估 loss, accuracy = model.evaluate(test_dataset) # 预测 predictions = model.predict(test_data)
重要工具
TensorBoard
- 可视化工具
- 监控训练过程
# 设置TensorBoard回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir='./logs',
histogram_freq=1
)
# 训练时使用
model.fit(..., callbacks=[tensorboard_callback])
模型保存与加载
# 保存整个模型
model.save('my_model')
# 加载模型
loaded_model = tf.keras.models.load_model('my_model')
# 保存权重
model.save_weights('model_weights.h5')
设备管理
# 检查可用设备
print(tf.config.list_physical_devices('GPU'))
# 手动设置设备
with tf.device('/GPU:0'):
# 在GPU上执行操作
a = tf.constant([1, 2, 3])
版本差异
| 特性 | TensorFlow 1.x | TensorFlow 2.x |
|---|---|---|
| 执行模式 | 图模式为主 | 即时执行为主 |
| API | 较低级,较分散 | 统一为Keras API |
| 变量定义 | tf.Variable + tf.placeholder |
tf.Variable |
| 会话 | 需要显式会话 | 不需要会话 |
学习建议
- 从 TensorFlow 2.x 开始学习:更简单直观
- 先掌握基本概念:张量、变量、操作
- 使用 Keras API:简化模型构建
- 实践为主:通过实际项目加深理解
- 利用官方文档和教程:TensorFlow官网有丰富的学习资源
这些基础概念是深入理解和使用 TensorFlow 的基石,建议在实际编码中不断练习和巩固。

版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。