生成一个PlanetoidPubMed类的对象时程序运行流程:
- 首先检查数据原始文件是否已下载:
- 检查
self.raw_dir目录下是否存在raw_file_names()属性方法返回的每个文件, - 如有文件不存在,则调用
download()方法执行原始文件下载。 - 其中
self.raw_dir为osp.join(self.root, 'raw')。
- 检查
- 其次检查数据是否经过处理:
- 首先检查之前对数据做变换的方法:检查
self.processed_dir目录下是否存在pre_transform.pt文件:如果存在,意味着之前进行过数据变换,则需加载该文件获取之前所用的数据变换的方法,并检查它与当前pre_transform参数指定的方法是否相同;如果不相同则会报出一个警告,“The pre_transform argument differs from the one used in ……”。 - 接着检查之前的样本过滤的方法:检查
self.processed_dir目录下是否存在pre_filter.pt文件,如果存在,意味着之前进行过样本过滤,则需加载该文件获取之前所用的样本过滤的方法,并检查它与当前pre_filter参数指定的方法是否相同,如果不相同则会报出一个警告,“The pre_filter argument differs from the one used in ……”。其中self.processed_dir为osp.join(self.root, 'processed')。 - 接着检查是否存在处理好的数据:检查
self.processed_dir目录下是否存在self.processed_paths方法返回的所有文件,如有文件不存在,意味着不存在已经处理好的样本的文件,如需执行以下的操作:- 调用
process方法,进行数据处理。 - 如果
pre_transform参数不为None,则调用pre_transform方法进行数据处理。 - 如果
pre_filter参数不为None,则进行样本过滤(此例子中不需要进行样本过滤,pre_filter参数始终为None)。 - 保存处理好的数据到文件,文件存储在
processed_paths()属性方法返回的路径。如果将数据保存到多个文件中,则返回的路径有多个。这些路径都在self.processed_dir目录下,以processed_file_names()属性方法的返回值为文件名。 - 最后保存新的
pre_transform.pt文件和pre_filter.pt文件,其中分别存储当前使用的数据处理方法和样本过滤方法。
- 调用
- 首先检查之前对数据做变换的方法:检查
总结
InMemoryDataset 子类的运行流程与实现四个函数的规范检查数据原始文件是否已下载检查数据是否经过处理1.self.processed_dir目录下是否存在pre_transform.pt 文件2.检查之前的样本过滤的方法,检查self.processed_dir目录下是否存在pre_filter.pt 文件3.检查是否存在处理好的数据3.2 构建模型1.使用 GCNConv() 构建模型2.使用 torch_geometric.nn.Sequential 构建模型
版权声明:本文为weixin_42348553原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。