如何使用 TensorFlow 和 Keras 创建、训练并进行预测
[1. 数据准备与预处理](#1. 数据准备与预处理)
[2. 构建模型](#2. 构建模型)
[3. 编译模型](#3. 编译模型)
[4. 训练模型](#4. 训练模型)
[5. 评估模型](#5. 评估模型)
[6. 模型应用与预测](#6. 模型应用与预测)
[7. 保存与加载模型](#7. 保存与加载模型)
1. 数据准备与预处理
我们将使用一个简单的线性回归问题,其中输入特征 x
和标签 y
之间存在线性关系。我们创建一个训练数据集,并将标签设置为输入特征的两倍加上一些噪声。
import numpy as np
import tensorflow as tf
# 创建训练数据,x 是输入特征,y 是标签(y = 2 * x + 噪声)
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=float) # 输入数据
y = 2 * x + np.random.normal(0, 1, size=x.shape) # 标签数据,加一些噪声
2. 构建模型
我们使用一个简单的神经网络来进行线性回归。这个网络只有一个全连接层,激活函数是线性的。
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_dim=1, activation='linear') # 线性激活函数
])
3. 编译模型
使用 SGD
优化器和均方误差损失函数,适合线性回归问题。
model.compile(optimizer='sgd', loss='mean_squared_error')
4. 训练模型
训练模型时,我们设置 1000 个训练周期,并传入数据 x
和标签 y
。
model.fit(x, y, epochs=1000)
5. 评估模型
训练结束后,我们评估模型的表现,使用 evaluate
函数来查看损失值。
loss = model.evaluate(x, y)
print(f"模型的损失值:{loss}")
6. 模型应用与预测
训练完成后,我们使用 model.predict()
来进行预测。你可以将新的输入数据传入模型,得到预测结果。
# 使用模型进行预测
new_x = np.array([11, 12, 13, 14, 15], dtype=float)
predictions = model.predict(new_x)
print("新的输入数据预测结果:")
print(predictions)
7. 保存与加载模型
你还可以保存和加载训练好的模型,以便在未来使用。\
# 保存模型
model.save('linear_model.keras')
# 加载模型
loaded_model = tf.keras.models.load_model('linear_model.keras')
# 使用加载的模型进行预测
loaded_predictions = loaded_model.predict(new_x)
print("加载的模型预测结果:")
print(loaded_predictions)
8.完整代码
import numpy as np
import tensorflow as tf
# 创建训练数据,x 是输入特征,y 是标签(y = 2 * x + 噪声)
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=float)
y = 2 * x + np.random.normal(0, 1, size=x.shape)
# 构建模型
model = tf.keras.Sequential([
tf.keras.layers.Dense(units=1, input_dim=1, activation='linear') # 线性激活函数
])
# 编译模型
model.compile(optimizer='sgd', loss='mean_squared_error')
# 训练模型
model.fit(x, y, epochs=1000)
# 评估模型
loss = model.evaluate(x, y)
print(f"模型的损失值:{loss}")
# 使用模型进行预测
new_x = np.array([11, 12, 13, 14, 15], dtype=float)
predictions = model.predict(new_x)
print("新的输入数据预测结果:")
print(predictions)
# 保存模型
model.save('linear_model.keras')
# 加载模型
loaded_model = tf.keras.models.load_model('linear_model.keras')
# 使用加载的模型进行预测
loaded_predictions = loaded_model.predict(new_x)
print("加载的模型预测结果:")
print(loaded_predictions)