训练期间损失没有减少(Word2Vec、Gensim)

2023-11-26

哪些情况会造成损失model.get_latest_training_loss()每个时期都会增加?

用于训练的代码:

class EpochSaver(CallbackAny2Vec):
    '''Callback to save model after each epoch and show training parameters '''

    def __init__(self, savedir):
        self.savedir = savedir
        self.epoch = 0

        os.makedirs(self.savedir, exist_ok=True)

    def on_epoch_end(self, model):
        savepath = os.path.join(self.savedir, "model_neg{}_epoch.gz".format(self.epoch))
        model.save(savepath)
        print(
            "Epoch saved: {}".format(self.epoch + 1),
            "Start next epoch ... ", sep="\n"
            )
        if os.path.isfile(os.path.join(self.savedir, "model_neg{}_epoch.gz".format(self.epoch - 1))):
            print("Previous model deleted ")
            os.remove(os.path.join(self.savedir, "model_neg{}_epoch.gz".format(self.epoch - 1))) 
        self.epoch += 1
        print("Model loss:", model.get_latest_training_loss())

    def train():

        ### Initialize model ###
        print("Start training Word2Vec model")

        workers = multiprocessing.cpu_count()/2

        model = Word2Vec(
            DocIter(),
            size=300, alpha=0.03, min_alpha=0.00025, iter=20,
            min_count=10, hs=0, negative=10, workers=workers,
            window=10, callbacks=[EpochSaver("./checkpoints")], 
            compute_loss=True
    )     

Output:

历元(1 到 20)的损失:

Model loss: 745896.8125
Model loss: 1403872.0
Model loss: 2022238.875
Model loss: 2552509.0
Model loss: 3065454.0
Model loss: 3549122.0
Model loss: 4096209.75
Model loss: 4615430.0
Model loss: 5103492.5
Model loss: 5570137.5
Model loss: 5955891.0
Model loss: 6395258.0
Model loss: 6845765.0
Model loss: 7260698.5
Model loss: 7712688.0
Model loss: 8144109.5
Model loss: 8542560.0
Model loss: 8903244.0
Model loss: 9280568.0
Model loss: 9676936.0

我究竟做错了什么?

语言 阿拉伯语。 作为 DocIter 的输入 - 带有标记的列表。


在 gensim 3.6.0 之前,报告的损失值可能不是很明智,仅将每次调用的计数重置为train(),而不是每个内部纪元。此问题即将进行一些修复:

https://github.com/RaRe-Technologies/gensim/pull/2135

与此同时,不同之处之前的值和最新的值之间可能更有意义。在这种情况下,您的数据表明第一个时期的总损失为 745896,而最后一个时期的损失总数为 (9676936-9280568=) 396,368 – 这可能表明了所希望的进展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

训练期间损失没有减少(Word2Vec、Gensim) 的相关文章

随机推荐

  • 在spark中对海量数据运行reduceByKey

    我在spark 中运行reduceByKey 我的程序是spark最简单的例子 val counts textFile flatMap line gt line split repartition 20000 map word gt wor
  • JAX-WS,身份验证和授权 - 如何?

    在 Web 服务中进行身份验证和授权的最佳方法是什么 我正在开发一组 Web 服务 需要基于角色的访问控制 使用 Metro SOAP 没有 EJB 的简单 java 我只想使用用户名和用户名对用户进行一次身份验证 密码 与数据库进行匹配
  • Javascript IE检测,为什么不使用简单的条件注释呢? [复制]

    这个问题在这里已经有答案了 为了检测 IE 大多数 Javascript 库都会使用各种技巧 jQuery 似乎在页面的 DOM 中添加了一个临时对象来检测某些功能 YUI2 在其用户代理上执行正则表达式YAHOO env ua funct
  • C 中字符到二进制的转换

    我正在尝试将字符转换为其二进制表示形式 因此字符 gt ascii 十六进制 gt 二进制 我知道要做到这一点我需要转变AND 但是 由于某种原因 我的代码无法正常工作 这是我所拥有的 temp指向 C 字符串中的索引 char c int
  • 编译时 jsoncpp 出现致命错误

    我是 cpp 新手 但根据项目要求 我需要使用其余 api 并解析响应 我能够调用 api 并捕获响应 但无法使用 JSONCPP 库解析它 这些是我解析 json 所遵循的步骤 使用此命令在 ubuntu 中安装 libjsoncppsu
  • 如何销毁/删除/解除绑定 Flexslider

    github 页面上有一些关于 destroy 方法的讨论 以及堆栈上的几个问题 但还没有一个简单的答案或解决方案 我经过大量搜索后才找到 当前版本的flexsliderhttp www woothemes com flexslider 没
  • 边框样式不适用于粘性位置元素

    我不知道为什么我的边框样式不兼容position sticky 属性 我想在我的粘性表格标题上设置边框样式 但我不想使用透明背景色 我怎样才能实现它 这是我的问题的示例代码和JSFiddle 链接 wrapper width 400px h
  • 有没有办法在 Graphviz 上绘制 B 树?

    我正在尝试生成类似的东西 https upload wikimedia org wikipedia commons 6 65 B tree svg 从内存中的 btree 有没有办法生成像 Graphviz 上那样的图形 以便我可以生成 d
  • Bootstrap 工具提示不适用于 Font Awesome 图标

    我正在使用引导工具提示 但我似乎无法让它与很棒的字体图标一起使用 我可以让它工作 a title Other Prep Info a 但这不起作用 a title Other Prep a
  • 如何将 Quasar 添加到现有的 Nuxt 应用程序?

    我想将 Quasar 安装到我现有的 Nuxt 项目中 我一直在阅读类星体文档他们在安装页面中唯一提到的是他们自己的 CLI 其中没有 Nuxt 选项 我也遇到过新类星体模块 但不再维护 有人有这方面的经验吗 如果它兼容 Vue 那么它也兼
  • 带事件的日期选择器?

    有没有一个 jquery 插件可以让我有一个像矩形一样的小日历 就像在日期选择器中一样 并且一些日期会有不同的颜色 当我用鼠标浏览日期时 会弹出一个窗口 说明当天安排了哪些活动 当然 我会用事件填充事件数组 我找到的只是日期选择器 小 或日
  • Java Enterprise 未出现在 IntelliJ 中

    我在将 Java EE glassfish 服务器导入 IntelliJ 时遇到问题 我没有在网上搜索任何内容 当我想创建一个新的 glassfish 项目时 我没有选择 我无法添加图像 因为我没有这方面的声誉 我在文本下方添加了图像的直接
  • ListView.removeFooterView(View) 崩溃

    我收到以下崩溃报告 android widget ListView lv lv removeFooterView v 错误是空指针异常 我检查 listView 本身不为空 这是什么原因造成的 是否需要确保要删除的视图不为空 这足够了还是我
  • Next.js 13 - 错误:next.config.js 不再支持“target”属性,甚至 next.config.js 也没有 target 属性

    我将 next js 应用程序升级到 Next js 13 并将新版本推送到 AWS Amplify 由于此错误 构建失败 next config js 中不再支持 target 属性 Error The target property i
  • Activity 泄露了 IntentReceiver - LollipopBrowserAccessibilityManager

    我希望在这里找到一些帮助 因为我对Android中的BroadcastReceivers不熟悉 这段代码会打开一个 WebView 将您重定向到登录页面 并在检测到 URL 更改后接收登录令牌 之后 该活动将被关闭 Override pro
  • 使 Tkinter Entry 小部件只读但可选择

    有没有办法制作 Tkinter Entry 小部件 以便可以突出显示和复制文本 但不能更改文本 Use the 状态选项 禁用 全部小写 使用此选项禁用 Entry 小部件 以便用户无法 在其中输入任何内容 使用 state tk DISA
  • 我想删除所有 bin 和 obj 文件夹以强制所有项目重建所有内容

    我处理多个项目 并且我想递归删除名为 bin 或 obj 的所有文件夹 这样我确信所有项目都会重建所有内容 有时这是强制 Visual Studio 忘记所有以前的内容的唯一方法 构建 有没有一种快速方法可以完成此任务 例如使用 bat 文
  • 在 setup.cfg 中正确使用 PEP 508 环境标记

    我正在尝试利用PEP 496 环境标记 and PEP 508 Python 软件包的依赖规范通过指定仅在特定操作系统上有意义的依赖关系 My setup py看起来像这样 import setuptools assert setuptoo
  • 用于监听 YouTube HTML5 播放器中 URL 更改的 JavaScript

    我正在编写一个 Chrome 扩展程序 因此我需要能够侦听 YouTube URL 中的更改 即查看您是否切换了视频 YouTube 使这变得困难 因为其 HTML5 视频播放器没有整个页面重新加载 没有 URL 片段更改 无法侦听 has
  • 训练期间损失没有减少(Word2Vec、Gensim)

    哪些情况会造成损失model get latest training loss 每个时期都会增加 用于训练的代码 class EpochSaver CallbackAny2Vec Callback to save model after e