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