- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 doc2vec 的新手。我最初试图理解 doc2vec,下面提到的是我使用 Gensim 的代码。如我所愿,我得到了两个文档的训练模型和文档向量。
但是,我想知道在几个 epoches 中重新训练模型的好处以及如何在 Gensim 中进行?我们可以使用 iter
或 alpha
参数来完成它,还是我们必须在单独的 for 循环
中训练它?请告诉我应该如何更改以下代码来训练模型 20 个时期。
另外,我很想知道 word2vec 模型也需要多次训练迭代。
# Import libraries
from gensim.models import doc2vec
from collections import namedtuple
# Load data
doc1 = ["This is a sentence", "This is another sentence"]
# Transform data
docs = []
analyzedDocument = namedtuple('AnalyzedDocument', 'words tags')
for i, text in enumerate(doc1):
words = text.lower().split()
tags = [i]
docs.append(analyzedDocument(words, tags))
# Train model
model = doc2vec.Doc2Vec(docs, size = 100, window = 300, min_count = 1, workers = 4)
# Get the vectors
model.docvecs[0]
model.docvecs[1]
最佳答案
Word2Vec
和相关算法(如“段落向量”又名 Doc2Vec
)通常对文本语料库进行多次训练。
Gensim 的 Word2Vec
/Doc2Vec
允许通过 iter
参数指定遍数,如果您还提供语料库对象初始化以触发立即训练。 (您上面的代码通过向 Doc2Vec(docs, ...)
构造函数调用提供 docs
来做到这一点。)
如果未指定,则 gensim 使用的默认 iter
值为 5,以匹配 Google 原始 word2vec.c 版本使用的默认值。所以你上面的代码已经使用了 5 次训练。
已发布的 Doc2Vec
工作通常使用 10-20 遍。如果您想改为执行 20 次传递,则可以将 Doc2Vec
初始化更改为:
model = doc2vec.Doc2Vec(docs, iter=20, ...)
因为 Doc2Vec
通常为每个文档使用唯一的标识符标签,所以更多的迭代可能更重要,因此每个文档向量在训练过程中多次出现用于训练,作为模型逐渐好转。另一方面,由于 Word2Vec
语料库中的词可能出现在整个语料库的任何地方,每个词的关联向量将随着模型的改进在过程的早期、中期和后期进行多次调整——甚至只需一次通过。 (因此,对于一个巨大的、变化多端的 Word2Vec
语料库,使用少于默认次数的遍数是可以想象的。)
您不需要执行自己的循环,大多数用户也不应该这样做。如果您自己管理单独的 build_vocab()
和 train()
步骤,而不是在初始化程序中提供 docs
语料库这样更简单的步骤调用以触发即时训练,那么您必须向 train()
提供一个 epochs
参数——它会执行该次数的传递,因此您仍然只需要调用一次 火车()
。
关于python - 什么是 doc2vec 训练迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807010/
假设我有一个组织 ID 向量 let orgs = vec![1, 3, 14, 12]; 然后我调用 .iter()在 each 上获取每个组织的事件,其中函数 get_events_for()返回
这个问题已经有答案了: What are Rust's exact auto-dereferencing rules? (4 个回答) 已关闭 3 年前。 我很困惑为什么这个函数 get适用于 Vec
let a = vec![ vec![1, 2], vec![3, 4], vec![5, 6] ]; 怎么才能聚成一个Vec包含在所有 Vec 中的所有值s 在 a ? 最佳答案 您可以使用 fla
我在HashMap, Vec>中有数据,我想将该数据作为字节缓冲区(单个Vec)写入文件,然后从文件中读取回去并重建HashMap结构。 是否有建立像这样的平坦化和恢复 map 的算法?我可以将元数据
我正在寻找一种“使用rust ”的方式来将 Vec 累积到 Vec 中,以便将每个内部 Vec 的第一个元素加在一起,将每个 Vec 的每个第二个元素加在一起,等等......,并将结果收集到 Vec
我正在寻找一种“使用rust ”的方式来将 Vec 累积到 Vec 中,以便将每个内部 Vec 的第一个元素加在一起,将每个 Vec 的每个第二个元素加在一起,等等......,并将结果收集到 Vec
我正在尝试使用 selection_sort 创建一个已排序的向量,同时保留原始未排序的向量: fn main() { let vector_1: Vec = vec![15, 23, 4,
在 https://doc.rust-lang.org/std/vec/struct.Vec.html#method.iter , 我只能在页面左侧的索引侧边栏中找到iter。但是,找不到 iter_
我正在尝试从 Vec> 创建一个集合向量 ( Vec> ) .这是我目前的进展: use std::collections::BTreeSet; fn main() { // The data
我错过了向量向量初始化的一些东西。在第一种方法中,我尝试了这段代码: let mut landFirst: Vec> = Vec::with_capacity(width); for v in lan
我想设计一个类似于示例 here 的函数除了我的情况,iproduct 的参数数量在编译时是未知的。正如 here 所解释的那样,这在 python 中很容易完成。 . 我已经尝试使用 itertoo
我有一个我不明白的问题: fn cipher_with(key: &[u8], data: &[u8]) -> Vec { let data_len = 16; let mut dat
我刚开始学习 Rust,我偶然发现了这个愚蠢的问题: error: mismatched types: expected `&[u8]` but found `&collections::vec::V
这个问题在这里已经有了答案: How to filter a vector of custom structs? (1 个回答) 关闭 4 年前。 我有一个接受 &Vec 的函数(其中 Word 是
试图创建一个 HashMap 的数据库结构向量。每个Vec包含 Box . use std::collections::HashMap; trait Model { fn id(&self)
我正在编写一个使用 Vec> 的库类型以按列优先顺序存储数据(每个内部 Vec 代表一列)。用户可以创建 Vec>具有任何行和列长度,但所有列都被限制为相同的长度。 有时我需要高效地遍历 Vec>按行
在 GLSL 中我不明白什么是“in”和“out”变量,这是什么意思?这是我从教程中复制的代码示例。 // Shader sources const GLchar* vertexSource =
例如 [[5,6][2,3][2,5][2,9][1,6]]先按第一个元素升序排序,当一个元素相等时,按第二个元素降序排序,得到[1,6],[2,9],[2,5],[2,3] ],[5,6] 最佳答案
我正在尝试为类型为Vec>的向量创建可变的迭代器 迭代器代码: pub struct IterMut { iter: &'a mut Vec>, ix: usize, inne
我是 rust 编程的新手。我想用递归实现合并排序。这是我的代码: fn merge(a: &mut Vec, b: &mut Vec) -> Vec { let mut temp: Vec
我是一名优秀的程序员,十分优秀!