编写画出训练过程的loss曲线
时间: 2024-11-22 17:36:01 浏览: 4
pytorch对抗示例生成教程使用的 MNIST 预训练模型
在编写训练过程中损失(Loss)曲线的代码时,我们需要跟踪训练过程中的损失值,并将其可视化。这里有一个基本的Python代码示例,使用了TensorFlow和Keras库,假设我们正在训练一个模型:
```python
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
# 定义简单线性回归模型
model = Sequential([
Dense(units=1, input_shape=[1])
])
# 设置优化器和损失函数
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
loss_fn = tf.keras.losses.MeanSquaredError()
# 假设我们有个生成随机数据的函数data_generator,用于模拟训练集
def generate_data(num_samples):
# 这里只是示例,你需要替换为真实的数据生成逻辑
x_train = np.random.rand(num_samples, 1)
y_train = 2 * x_train + 1 + np.random.randn(num_samples, 1)
return x_train, y_train
# 准备数据
x_train, y_train = generate_data(1000)
# 训练循环
history = model.fit(x_train, y_train, epochs=100, verbose=0, callbacks=[tf.keras.callbacks.TensorBoard(log_dir="logs")]) # 使用TensorBoard记录训练信息
# 获取训练历史
loss_history = history.history["loss"]
# 绘制损失曲线
plt.figure(figsize=(8, 6))
plt.plot(range(1, len(loss_history) + 1), loss_history, label="Training Loss")
plt.title("Loss Curve During Training")
plt.xlabel("Epochs")
plt.ylabel("Mean Squared Error (MSE)")
plt.grid(True)
plt.legend()
plt.show()
# 或者可以保存为图片
plt.savefig("training_loss_curve.png")
```
在这个例子中,我们首先定义了一个简单的线性回归模型,然后在训练过程中收集每个epoch的损失值,并利用`TensorBoard`回调来记录。最后,我们绘制了损失随时间变化的趋势。
阅读全文