TensorFlow 是一个功能强大的深度学习框架,可以用来构建、训练和部署机器学习模型。主要作用于:
构建神经网络模型(回归、分类、生成模型等)。
进行数值计算,并提供 GPU 加速。
实现自动梯度求导(如反向传播训练)。
应用机器学习模型进行预测。
- 数据准备
from tensorflow.keras.datasets import mnist
# 加载数据集(已划分为训练集和测试集)
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 数据预处理:像素值归一化到 0~1 之间,并调整张量形状
x_train = x_train / 255.0
x_test = x_test / 255.0
- 构建模型
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
# 定义一个简单神经网络模型
model = Sequential([
Flatten(input_shape=(28, 28)), # 将 28x28 的图像展平为向量
Dense(128, activation='relu'), # 一个全连接层,128 个神经元,激活函数为 ReLU
Dense(10, activation='softmax') # 输出层,10 类,用 softmax 输出概率分布
])
- 编译模型
model.compile(
optimizer='adam', # Adam 优化器
loss='sparse_categorical_crossentropy', # 损失函数
metrics=['accuracy'] # 评价指标
)
- 训练模型
# 使用训练集训练模型
model.fit(x_train, y_train, epochs=5, batch_size=32)
- 模型评估
# 在测试集上评估模型
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print("\n测试集准确率:", test_acc)
- 模型预测
import numpy as np
# 从测试集中取一张图片
sample_image = x_test[0]
sample_image = np.expand_dims(sample_image, axis=0) # 调整形状为 [1, 28, 28]
# 使用模型进行预测
predictions = model.predict(sample_image)
predicted_label = np.argmax(predictions)
print(f"预测结果:{predicted_label}")
可视化
- 使用 Matplotlib 查看图像数据
import matplotlib.pyplot as plt
# 显示 MNIST 数据集中的一个样本
plt.imshow(x_train[0], cmap='gray')
plt.title(f"标签:{y_train[0]}")
plt.show()
- 渲染训练曲线
# 绘制训练曲线(损失或准确性)
history = model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
# 绘制损失曲线
plt.plot(history.history['loss'], label='训练损失')
plt.plot(history.history['val_loss'], label='验证损失')
plt.title("损失曲线")
plt.xlabel("Epochs")
plt.ylabel("Loss")
plt.legend()
plt.show()
TensorFlow 提供了许多高级功能,可以进一步扩展模型的能力:
卷积神经网络(CNN): 建立图像识别模型。
循环神经网络(RNN, LSTM): 构建时间序列模型或自然语言处理模型。
分布式训练: 使用多 GPU 节点训练大规模模型。
导出模型: 保存模型并加载供生产环境的预测使用:
model.save('my_model.h5') # 保存模型
new_model = tf.keras.models.load_model('my_model.h5') # 加载模型