rasa source - core训练源码走读
Contents
rasa source - core训练源码走读
通过在rasa/cli/train.py: train_core函数中添加断点,使用pudb进行python调试调试跟踪的方式进行源码走读,pudb详细见:https://documen.tician.de/pudb。
刚开始的几个调用函数如下:
rasa/cli/train.py: train_core- 调用
rasa/train.py:train_core - 调用
rasa/train.py:train_core_async - 调用
rasa/train.py:_train_core_with_validated_data - 调用
rasa/core/train.py:train
rasa/core/train.py:train实现的代码如下:
|
|
正如上面代码注释中所述,Agent类为rasa最重要的功能提供了便捷的接口,包括训练,消息处理,加载对话模型, 预测下一个action,处理一个channel等。下面主要介绍Agent的一些实现。其构造函数如下:
|
|
agent.load_data内部调用了rasa/core/training/__init__.py: load_data,具体如下:
|
|
resource_name.get_stories调用了rasa/importers/importer.py:CoreDataImporter.get_stories,接着调用了rasa/importers/importer.py:CombinedDataImporter.get_stories,然后调用了rasa/importers/rasa.py:RasaFileImporter.get_stories,来获取StoryGraph对象。用图的形式来存储stories,这类似于使用命令rasa visualize看到的样子。
训练数据生成完成之后,调用的是agent.train,用来进行训练,该函数调用了rasa/core/agent.py:train函数,对于该示例,rasa/core/agent.py:train函数执行的是self.ensemble.train。该函数位于rasa/core/policies/ensemble.py实现如下:
|
|
在policy训练过程中的x,y的训练数据,没别对应对话状态和针对状态需要的action。
关于每个policy的训练函数的实现,在这里不展开了。
Author grassofsky
LastMod 2019-12-21