python - spaCy 配置文件中参数的解释/解释
问题描述
config.cfg
关于我们在文件中定义的参数,我有几个问题。尽管 spaCy 的文档确实试图解释它们,但我觉得解释的描述性不够,而且很多东西都散布在文档周围,很难找到你需要的东西,尤其是 spaCy v3,(除非我'我查看了网站的错误部分)这是最近的,因此论坛中的问题/答案确实更少。我基本上是在构建一个命名实体识别 (NER) 模型以及一个转换器组件。我的问题如下:
在下面的部分(同样的问题),和
corpora.train
有什么区别?max_length
limit
对于
max_length
文档说“对训练文档长度的限制”
对于limit
,文档说“对训练示例数量的限制”他们不是或多或少相同的东西吗?我的意思是我可以通过限制文档本身的长度来限制训练示例的数量,对吗?
[corpora.dev]
@readers = "spacy.Corpus.v1"
path = ${paths.dev}
max_length = 0
gold_preproc = false
limit = 0
augmenter = null
- 在下面的代码段中,一个“步骤”的含义是什么?我理解
max_steps=0
意味着无限的步骤。但是我怎么知道有多少这样的“步骤”构成一个纪元?1个这样的步骤还涵盖了多少例句?
[training]
train_corpus = "corpora.train"
dev_corpus = "corpora.dev"
seed = ${system.seed}
gpu_allocator = ${system.gpu_allocator}
dropout = 0.1
accumulate_gradient = 1
patience = 1600
max_epochs = 10
max_steps = 0
eval_frequency = 200
frozen_components = []
before_to_disk = null
learn_rate
在训练过程中,下面的代码片段究竟是如何修改的?total_steps
更具体地说,是什么warmup_steps
意思?
[training.optimizer.learn_rate]
@schedules = "warmup_linear.v1"
warmup_steps = 250
total_steps = 200
initial_rate = 0.00005
- 最后,在训练过程的 CLI 输出中,这个“#”到底是什么?在GitHub 讨论之一中提到“# 列是优化步骤的数量(= 处理的批次)”,但是这 1 个批次或“优化步骤”到底是什么?如果训练过程向我显示了 200 个这样的“批次”之后的分数,我该如何解释它(比如到那时已经处理了多少个例句)?
解决方案
在以下部分(对于 corpora.train 也有同样的问题),max_length 和 limit 有什么区别?对于 max_length,文档说“对训练文档长度的限制”对于限制,文档说“对训练示例数量的限制”它们不是或多或少是一回事吗?我的意思是我可以通过限制文档本身的长度来限制训练示例的数量,对吗?
这些是不同的东西,您似乎对“文档”是什么感到困惑。您可以将“文档”视为 spaCy 中的单个对象。不同的文档对彼此一无所知。文档基于单个字符串。以普通的 Python 字符串为例:
["cat", "dog", "fish"] # this is three strings
["cat dog fish"] # this is one string
您可以看到“从列表中取三个字符串”和“取长度不超过三个字符的字符串”是非常不同的事情。spaCy 中的值就是这样。
在下面的代码段中,一个“步骤”的含义是什么?我理解 max_steps=0 意味着无限步。但是我怎么知道有多少这样的“步骤”构成一个纪元?1个这样的步骤还涵盖了多少例句?
一个“步骤”就是一个“批次”。“批次”正在对一些示例进行训练并更新一次模型权重。您可以控制批次的大小,因此它可以是任意数量的示例。“epoch”是指训练看到每个示例一次需要多长时间,因此如果您每批有 5 个文档和 30 个训练文档,那么 6 个步骤将是一个 epoch。
spaCy 不一定对训练中的“句子”一无所知,文档是批处理的基本单元。您的训练示例可能都是单个句子,但这不是必需的。
这些术语不是特定于 spaCy 的,它们广泛用于机器学习。
在训练过程中,以下代码片段中的 learn_rate 究竟是如何修改的?更具体地说,total_steps 和 warmup_steps 是什么意思?
这是来自 Thinc,请参阅那里的文档。
去引用:
生成一个序列,从初始速率开始,然后是预热期,然后是线性下降。用于学习率。
total_steps
在学习率结束时停止变化。
最后,在训练过程的 CLI 输出中,这个“#”到底是什么?在 GitHub 讨论之一中提到“# 列是优化步骤的数量(= 处理的批次)”,但是这 1 个批次或“优化步骤”到底是什么?如果训练过程向我显示了 200 个这样的“批次”之后的分数,我该如何解释它(比如到那时已经处理了多少个例句)?
一个步骤与 #2 中的相同,它是一批。批量大小以文档而不是句子表示。
推荐阅读
- c - strtok 问题以比较 strtok 函数的嵌套结果中的两个单词
- android-layout - 无法将渐变设置为按钮。安卓
- tensorflow - 如何在keras中指定层数?
- r - read.csv 用函数读取 csv 文件,单元格用 ="{value}" 包裹
- sql - SQLITE 查询 - 检索两个版本之间的所有版本?
- python - 如何使用python正确保存excel文件?
- javascript - 如何在 Chrome 中保持重新加载/刷新页面或我想要的链接?
- ios - 谷歌移动视觉iOS swift
- android - 如何在警报对话框中将图像 URI 设置为图标?
- reactjs - 如何在 Context Provider 中访问 StaticRouter 的“context”道具