@@ -114,7 +114,7 @@ fastNLP的数据载入主要是由Loader与Pipe两个基类衔接完成的,您 | |||||
SpanFPreRecMetric: f=0.515528, pre=0.65098, rec=0.426735 | SpanFPreRecMetric: f=0.515528, pre=0.65098, rec=0.426735 | ||||
Reloaded the best model. | Reloaded the best model. | ||||
训练结束之后过,可以通过 :class:`fastNLP.Tester`测试其在测试集上的性能 | |||||
训练结束之后过,可以通过 :class:`~fastNLP.Tester` 测试其在测试集上的性能 | |||||
.. code-block::python | .. code-block::python | ||||
@@ -2,11 +2,11 @@ | |||||
fastNLP 由 :mod:`~fastNLP.core` 、 :mod:`~fastNLP.io` 、:mod:`~fastNLP.embeddings` 、 :mod:`~fastNLP.modules`、 | fastNLP 由 :mod:`~fastNLP.core` 、 :mod:`~fastNLP.io` 、:mod:`~fastNLP.embeddings` 、 :mod:`~fastNLP.modules`、 | ||||
:mod:`~fastNLP.models` 等子模块组成,你可以查看每个模块的文档。 | :mod:`~fastNLP.models` 等子模块组成,你可以查看每个模块的文档。 | ||||
- :mod:`~fastNLP.core` 是fastNLP 的核心模块,包括 DataSet、 Trainer、 Tester 等组件。详见文档 :doc:`/fastNLP.core` | |||||
- :mod:`~fastNLP.io` 是实现输入输出的模块,包括了数据集的读取,模型的存取等功能。详见文档 :doc:`/fastNLP.io` | |||||
- :mod:`~fastNLP.embeddings` 提供用于构建复杂网络模型所需的各种embedding。详见文档 :doc:`/fastNLP.embeddings` | |||||
- :mod:`~fastNLP.modules` 包含了用于搭建神经网络模型的诸多组件,可以帮助用户快速搭建自己所需的网络。详见文档 :doc:`/fastNLP.modules` | |||||
- :mod:`~fastNLP.models` 包含了一些使用 fastNLP 实现的完整网络模型,包括 :class:`~fastNLP.models.CNNText` 、 :class:`~fastNLP.models.SeqLabeling` 等常见模型。详见文档 :doc:`fastNLP.models` | |||||
- :mod:`~fastNLP.core` 是fastNLP 的核心模块,包括 DataSet、 Trainer、 Tester 等组件。详见文档 :mod:`fastNLP.core` | |||||
- :mod:`~fastNLP.io` 是实现输入输出的模块,包括了数据集的读取,模型的存取等功能。详见文档 :mod:`fastNLP.io` | |||||
- :mod:`~fastNLP.embeddings` 提供用于构建复杂网络模型所需的各种embedding。详见文档 :mod:`fastNLP.embeddings` | |||||
- :mod:`~fastNLP.modules` 包含了用于搭建神经网络模型的诸多组件,可以帮助用户快速搭建自己所需的网络。详见文档 :mod:`fastNLP.modules` | |||||
- :mod:`~fastNLP.models` 包含了一些使用 fastNLP 实现的完整网络模型,包括 :class:`~fastNLP.models.CNNText` 、 :class:`~fastNLP.models.SeqLabeling` 等常见模型。详见文档 :mod:`fastNLP.models` | |||||
fastNLP 中最常用的组件可以直接从 fastNLP 包中 import ,他们的文档如下: | fastNLP 中最常用的组件可以直接从 fastNLP 包中 import ,他们的文档如下: | ||||
""" | """ | ||||
@@ -8,7 +8,7 @@ core 模块里实现了 fastNLP 的核心框架,常用的功能都可以从 fa | |||||
# 从 core 模块的子模块 batch 中 import DataSetIter | # 从 core 模块的子模块 batch 中 import DataSetIter | ||||
from fastNLP.core.batch import DataSetIter | from fastNLP.core.batch import DataSetIter | ||||
对于常用的功能,你只需要在 :doc:`fastNLP` 中查看即可。如果想了解各个子模块的具体作用,您可以在下面找到每个子模块的具体文档。 | |||||
对于常用的功能,你只需要在 :mod:`fastNLP` 中查看即可。如果想了解各个子模块的具体作用,您可以在下面找到每个子模块的具体文档。 | |||||
""" | """ | ||||
__all__ = [ | __all__ = [ | ||||
@@ -4,7 +4,7 @@ callback模块实现了 fastNLP 中的许多 callback 类,用于增强 :class: | |||||
虽然Trainer本身已经集成了一些功能,但仍然不足以囊括训练过程中可能需要到的功能, | 虽然Trainer本身已经集成了一些功能,但仍然不足以囊括训练过程中可能需要到的功能, | ||||
比如负采样,learning rate decay 和 early stop等。 | 比如负采样,learning rate decay 和 early stop等。 | ||||
为了解决这个问题,fastNLP引入了callback的机制,:class:`~fastNLP.Callback` 是一种在Trainer训练过程中特定阶段会运行的函数集合。 | 为了解决这个问题,fastNLP引入了callback的机制,:class:`~fastNLP.Callback` 是一种在Trainer训练过程中特定阶段会运行的函数集合。 | ||||
关于 :class:`~fastNLP.Trainer` 的详细文档,请参见 :doc:`trainer 模块<fastNLP.core.trainer>` | |||||
关于 :class:`~fastNLP.Trainer` 的详细文档,请参见 :mod:`trainer 模块<fastNLP.core.trainer>` | |||||
我们将 :meth:`~fastNLP.Trainer.train` 这个函数内部分为以下的阶段,在对应阶段会触发相应的调用:: | 我们将 :meth:`~fastNLP.Trainer.train` 这个函数内部分为以下的阶段,在对应阶段会触发相应的调用:: | ||||
@@ -102,7 +102,7 @@ class Callback(object): | |||||
""" | """ | ||||
Callback是fastNLP中被设计用于增强 :class:`~fastNLP.Trainer` 的类。 | Callback是fastNLP中被设计用于增强 :class:`~fastNLP.Trainer` 的类。 | ||||
如果Callback被传递给了 Trainer , 则 Trainer 会在对应的阶段调用Callback的函数, | 如果Callback被传递给了 Trainer , 则 Trainer 会在对应的阶段调用Callback的函数, | ||||
具体调用时机可以通过 :doc:`trainer 模块<fastNLP.core.trainer>` 查看。 | |||||
具体调用时机可以通过 :mod:`trainer 模块<fastNLP.core.trainer>` 查看。 | |||||
这是Callback的基类,所有的callback必须继承自这个类 | 这是Callback的基类,所有的callback必须继承自这个类 | ||||
""" | """ | ||||
@@ -306,7 +306,7 @@ from .utils import pretty_table_printer | |||||
class DataSet(object): | class DataSet(object): | ||||
""" | """ | ||||
fastNLP的数据容器,详细的使用方法见文档 :doc:`fastNLP.core.dataset` | |||||
fastNLP的数据容器,详细的使用方法见文档 :mod:`fastNLP.core.dataset` | |||||
""" | """ | ||||
def __init__(self, data=None): | def __init__(self, data=None): | ||||
@@ -23,10 +23,9 @@ from .dataset import DataSet | |||||
from .losses import _prepare_losser | from .losses import _prepare_losser | ||||
from .optimizer import Optimizer | from .optimizer import Optimizer | ||||
from .utils import _build_args | from .utils import _build_args | ||||
from .utils import _check_fp16 | |||||
from .utils import _get_func_signature | from .utils import _get_func_signature | ||||
from .utils import _move_dict_value_to_device | from .utils import _move_dict_value_to_device | ||||
from .utils import _check_fp16 | |||||
try: | try: | ||||
from apex import amp | from apex import amp | ||||
@@ -76,9 +75,9 @@ class DistTrainer(): | |||||
:param optimizer: `torch.optim.Optimizer` 优化器。如果为None,则Trainer使用默认的Adam(model.parameters(), lr=4e-3)这个优化器 | :param optimizer: `torch.optim.Optimizer` 优化器。如果为None,则Trainer使用默认的Adam(model.parameters(), lr=4e-3)这个优化器 | ||||
:param loss: 使用的 :class:`~fastNLP.core.losses.LossBase` 对象。当为None时,默认使用 :class:`~fastNLP.LossInForward` | :param loss: 使用的 :class:`~fastNLP.core.losses.LossBase` 对象。当为None时,默认使用 :class:`~fastNLP.LossInForward` | ||||
:param list callbacks_all: 用于在train过程中起调节作用的回调函数,作用于所有训练进程中。 | :param list callbacks_all: 用于在train过程中起调节作用的回调函数,作用于所有训练进程中。 | ||||
可使用的callback参见 :doc:`callback模块 <fastNLP.core.callback>` | |||||
可使用的callback参见 :mod:`callback模块 <fastNLP.core.callback>` | |||||
:param list callbacks_master: 用于在train过程中起调节作用的回调函数,只作用于其中一个进程( Master 进程)。 | :param list callbacks_master: 用于在train过程中起调节作用的回调函数,只作用于其中一个进程( Master 进程)。 | ||||
可使用的callback参见 :doc:`callback模块 <fastNLP.core.callback>` | |||||
可使用的callback参见 :mod:`callback模块 <fastNLP.core.callback>` | |||||
:param int batch_size_per_gpu: 训练时,每个进程的 batch 大小。 | :param int batch_size_per_gpu: 训练时,每个进程的 batch 大小。 | ||||
:param int n_epochs: 需要优化迭代多少次。 | :param int n_epochs: 需要优化迭代多少次。 | ||||
:param num_workers: int, 有多少个线程来进行数据pad处理。 | :param num_workers: int, 有多少个线程来进行数据pad处理。 | ||||
@@ -87,7 +86,7 @@ class DistTrainer(): | |||||
:param metrics: 验证的评估函数。可以只使用一个 :class:`Metric<fastNLP.core.metrics.MetricBase>` , | :param metrics: 验证的评估函数。可以只使用一个 :class:`Metric<fastNLP.core.metrics.MetricBase>` , | ||||
也可以使用多个 :class:`Metric<fastNLP.core.metrics.MetricBase>` ,通过列表传入。 | 也可以使用多个 :class:`Metric<fastNLP.core.metrics.MetricBase>` ,通过列表传入。 | ||||
如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, | 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, | ||||
则保存当前模型。Metric种类详见 :doc:`metrics模块 <fastNLP.core.metrics>` 。仅在传入dev_data时有效。 | |||||
则保存当前模型。Metric种类详见 :mod:`metrics模块 <fastNLP.core.metrics>` 。仅在传入dev_data时有效。 | |||||
:param str,None metric_key: :class:`Metric<fastNLP.core.metrics.MetricBase>` 有时会有多个指标, | :param str,None metric_key: :class:`Metric<fastNLP.core.metrics.MetricBase>` 有时会有多个指标, | ||||
比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 | 比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 | ||||
要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 | 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 | ||||
@@ -1,6 +1,6 @@ | |||||
""" | """ | ||||
instance 模块实现了Instance 类在fastNLP中对应sample。一个sample可以认为是一个Instance类型的对象。 | instance 模块实现了Instance 类在fastNLP中对应sample。一个sample可以认为是一个Instance类型的对象。 | ||||
便于理解的例子可以参考文档 :doc:`fastNLP.core.dataset` 中的表格 | |||||
便于理解的例子可以参考文档 :mod:`fastNLP.core.dataset` 中的表格 | |||||
""" | """ | ||||
@@ -296,7 +296,7 @@ class MetricBase(object): | |||||
class AccuracyMetric(MetricBase): | class AccuracyMetric(MetricBase): | ||||
""" | """ | ||||
准确率Metric(其它的Metric参见 :doc:`fastNLP.core.metrics` ) | |||||
准确率Metric(其它的Metric参见 :mod:`fastNLP.core.metrics` ) | |||||
""" | """ | ||||
def __init__(self, pred=None, target=None, seq_len=None): | def __init__(self, pred=None, target=None, seq_len=None): | ||||
@@ -27,7 +27,7 @@ tester模块实现了 fastNLP 所需的Tester类,能在提供数据、模型 | |||||
tester = Tester(dataset, model, metrics=AccuracyMetric()) | tester = Tester(dataset, model, metrics=AccuracyMetric()) | ||||
eval_results = tester.test() | eval_results = tester.test() | ||||
这里Metric的映射规律是和 :class:`fastNLP.Trainer` 中一致的,具体使用请参考 :doc:`trainer 模块<fastNLP.core.trainer>` 的1.3部分。 | |||||
这里Metric的映射规律是和 :class:`fastNLP.Trainer` 中一致的,具体使用请参考 :mod:`trainer 模块<fastNLP.core.trainer>` 的1.3部分。 | |||||
Tester在验证进行之前会调用model.eval()提示当前进入了evaluation阶段,即会关闭nn.Dropout()等,在验证结束之后会调用model.train()恢复到训练状态。 | Tester在验证进行之前会调用model.eval()提示当前进入了evaluation阶段,即会关闭nn.Dropout()等,在验证结束之后会调用model.train()恢复到训练状态。 | ||||
@@ -314,7 +314,7 @@ Example2.3 | |||||
这里,我们通过继承 :class:`~fastNLP.Callback` 类定义了自己的 callback 的,并和内置的 :class:`~fastNLP.EarlyStopCallback` | 这里,我们通过继承 :class:`~fastNLP.Callback` 类定义了自己的 callback 的,并和内置的 :class:`~fastNLP.EarlyStopCallback` | ||||
一起传给了 :class:`~fastNLP.Trainer` ,增强了 :class:`~fastNLP.Trainer` 的功能 | 一起传给了 :class:`~fastNLP.Trainer` ,增强了 :class:`~fastNLP.Trainer` 的功能 | ||||
fastNLP已经自带了很多callback函数供使用,可以参考 :doc:`fastNLP.core.callback` 。 | |||||
fastNLP已经自带了很多callback函数供使用,可以参考 :mod:`fastNLP.core.callback` 。 | |||||
""" | """ | ||||
__all__ = [ | __all__ = [ | ||||
@@ -364,7 +364,7 @@ class Trainer(object): | |||||
(4) 每个epoch结束或一定step后进行验证集验证; | (4) 每个epoch结束或一定step后进行验证集验证; | ||||
(5) 保存获得更好验证性能的模型等。 | (5) 保存获得更好验证性能的模型等。 | ||||
详细的介绍参见 :doc:`fastNLP.core.trainer` | |||||
详细的介绍参见 :mod:`fastNLP.core.trainer` | |||||
""" | """ | ||||
def __init__(self, train_data, model, optimizer=None, loss=None, | def __init__(self, train_data, model, optimizer=None, loss=None, | ||||
@@ -391,7 +391,7 @@ class Trainer(object): | |||||
:param metrics: 验证的评估函数。可以只使用一个 :class:`Metric<fastNLP.core.metrics.MetricBase>` , | :param metrics: 验证的评估函数。可以只使用一个 :class:`Metric<fastNLP.core.metrics.MetricBase>` , | ||||
也可以使用多个 :class:`Metric<fastNLP.core.metrics.MetricBase>` ,通过列表传入。 | 也可以使用多个 :class:`Metric<fastNLP.core.metrics.MetricBase>` ,通过列表传入。 | ||||
如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, | 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, | ||||
则保存当前模型。Metric种类详见 :doc:`metrics模块 <fastNLP.core.metrics>` 。仅在传入dev_data时有效。 | |||||
则保存当前模型。Metric种类详见 :mod:`metrics模块 <fastNLP.core.metrics>` 。仅在传入dev_data时有效。 | |||||
:param str,None metric_key: :class:`Metric<fastNLP.core.metrics.MetricBase>` 有时会有多个指标, | :param str,None metric_key: :class:`Metric<fastNLP.core.metrics.MetricBase>` 有时会有多个指标, | ||||
比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 | 比如 :class:`~fastNLP.core.metrics.SpanFPreRecMetric` 中包含了'f', 'pre', 'rec'。此时需 | ||||
要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 | 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个'-'来表 | ||||
@@ -417,7 +417,7 @@ class Trainer(object): | |||||
已知可能会出现的问题:Adagrad优化器可能无法正常使用这个参数,请手动管理模型位置。 | 已知可能会出现的问题:Adagrad优化器可能无法正常使用这个参数,请手动管理模型位置。 | ||||
:param list(callbacks) callbacks: 用于在train过程中起调节作用的回调函数。比如early stop,negative sampling等可以 | :param list(callbacks) callbacks: 用于在train过程中起调节作用的回调函数。比如early stop,negative sampling等可以 | ||||
通过callback机制实现。 可使用的callback参见 :doc:`callback模块 <fastNLP.core.callback>` | |||||
通过callback机制实现。 可使用的callback参见 :mod:`callback模块 <fastNLP.core.callback>` | |||||
:param int check_code_level: 模型检查等级. -1: 不进行检查; 0: 仅出现错误时停止; 1: 如果有field没有被使用, | :param int check_code_level: 模型检查等级. -1: 不进行检查; 0: 仅出现错误时停止; 1: 如果有field没有被使用, | ||||
报告警告信息; 2: 有任何field没有被使用都报错. 检查的原理是通过使用很小的batch(默认2个sample)来运行代码,但是 | 报告警告信息; 2: 有任何field没有被使用都报错. 检查的原理是通过使用很小的batch(默认2个sample)来运行代码,但是 | ||||
这个过程理论上不会修改任何参数,只是会检查能否运行。但如果(1)模型中存在将batch_size写为某个固定值的情况; | 这个过程理论上不会修改任何参数,只是会检查能否运行。但如果(1)模型中存在将batch_size写为某个固定值的情况; | ||||
@@ -1,13 +1,13 @@ | |||||
""" | """ | ||||
用于IO的模块, 具体包括: | 用于IO的模块, 具体包括: | ||||
1. 用于读入 embedding 的 :doc:`EmbedLoader <fastNLP.io.embed_loader>` 类, | |||||
1. 用于读入 embedding 的 :mod:`EmbedLoader <fastNLP.io.embed_loader>` 类, | |||||
2. 用于读入不同格式数据的 :doc:`Loader <fastNLP.io.loader>` 类 | |||||
2. 用于读入不同格式数据的 :mod:`Loader <fastNLP.io.loader>` 类 | |||||
3. 用于处理读入数据的 :doc:`Pipe <fastNLP.io.pipe>` 类 | |||||
3. 用于处理读入数据的 :mod:`Pipe <fastNLP.io.pipe>` 类 | |||||
4. 用于保存和载入模型的类, 参考 :doc:`model_io文档</fastNLP.io.model_io>` | |||||
4. 用于保存和载入模型的类, 参考 :mod:`model_io模块 <fastNLP.io.model_io>` | |||||
这些类的使用方法如下: | 这些类的使用方法如下: | ||||
""" | """ | ||||
@@ -9,7 +9,7 @@ | |||||
.. csv-table:: | .. csv-table:: | ||||
:header: "类型", "功能", "常见组件" | :header: "类型", "功能", "常见组件" | ||||
"embedding", 参见 :doc:`/fastNLP.embeddings` , "Elmo, Bert" | |||||
"embedding", 参见 :mod:`/fastNLP.embeddings` , "Elmo, Bert" | |||||
"encoder", "将输入编码为具有表示能力的向量", "CNN, LSTM, Transformer" | "encoder", "将输入编码为具有表示能力的向量", "CNN, LSTM, Transformer" | ||||
"decoder", "将具有某种表示意义的向量解码为需要的输出形式 ", "MLP, CRF" | "decoder", "将具有某种表示意义的向量解码为需要的输出形式 ", "MLP, CRF" | ||||
"其它", "配合其它组件使用的组件", "Dropout" | "其它", "配合其它组件使用的组件", "Dropout" | ||||
@@ -52,13 +52,14 @@ __all__ = [ | |||||
'summary' | 'summary' | ||||
] | ] | ||||
import sys | |||||
from . import decoder | from . import decoder | ||||
from . import encoder | from . import encoder | ||||
from .decoder import * | from .decoder import * | ||||
from .dropout import TimestepDropout | from .dropout import TimestepDropout | ||||
from .encoder import * | from .encoder import * | ||||
from .utils import summary | from .utils import summary | ||||
import sys | |||||
from ..doc_utils import doc_process | from ..doc_utils import doc_process | ||||
doc_process(sys.modules[__name__]) | doc_process(sys.modules[__name__]) |