You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python绘制Skip-gram模型训练的Loss变化曲线?

绘制Skip-Gram训练Loss曲线的方案

没问题,这事儿不难,咱们只需要两步:先收集每个epoch的Loss数据,再用matplotlib把它画出来就行。我帮你修改训练代码,再加上绘图的部分,直接就能用:

第一步:修改训练代码,收集Loss历史数据

你只需要在训练循环前初始化一个列表来存储每个epoch的Loss,然后每个epoch结束后把loss值加进去就行:

# 先导入需要的库(如果还没导的话)
import numpy as np
from matplotlib import pyplot as plt

# 初始化一个列表来保存每个epoch的Loss
loss_history = []

# Train model
for epoch in range(1, 151):
    loss = 0
    for i, elem in enumerate(skip_grams):
        pair_first_elem = np.array(list(zip(*elem[0]))[0], dtype='int32')
        pair_second_elem = np.array(list(zip(*elem[0]))[1], dtype='int32')
        labels = np.array(elem[1], dtype='int32')
        test.X = [pair_first_elem, pair_second_elem]
        test.Y = labels
        #if i % 10000 == 0:
        #print('Processed {} (skip_first, skip_second, relevance) pairs'.format(i))
        loss += model1.train_on_batch(test.X,test.Y)
    print('Epoch:', epoch, 'Loss:', loss)
    # 把当前epoch的Loss加入历史列表
    loss_history.append(loss)

第二步:绘制Loss变化曲线

训练完成后,用matplotlib绘制曲线,还可以加上标题、坐标轴标签,让图更清晰:

# 创建绘图对象,设置画布大小
plt.figure(figsize=(10, 6))

# 绘制Loss曲线,加上标记点更直观
plt.plot(range(1, 151), loss_history, marker='o', linestyle='-', color='b')

# 设置图的标题和坐标轴标签
plt.title('Skip-Gram Training Loss Over Epochs', fontsize=14)
plt.xlabel('Epoch', fontsize=12)
plt.ylabel('Total Loss', fontsize=12)

# 显示网格线,方便读取数值
plt.grid(True)

# 显示图像(或者用plt.savefig('loss_curve.png')保存到本地)
plt.show()

一些小提示

  • 如果你的Loss值波动很大,可以考虑对Loss做平滑处理(比如计算滑动平均),曲线会更易读。
  • 如果你想保存图片,把plt.show()换成plt.savefig('skip_gram_loss_curve.png', dpi=300)就能得到高清的PNG图。
  • 确保你已经安装了matplotlib,如果没装的话,运行pip install matplotlib就能完成安装。

内容的提问来源于stack exchange,提问作者Amanda Tennakoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:12:35