# STSL **Repository Path**: ahaBCD/STSL ## Basic Information - **Project Name**: STSL - **Description**: The code of STSL - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-05 - **Last Updated**: 2025-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README * 以下是初步尝试代码 train_origin: 最开始的训练,不是这个任务的,只是使用了同一个数据集,可以参考,这里还没有树结构,也没有分裂模型 train_all_for_one: 改为了三段LSTM的训练,但这里是直接集中式从表格读取数据,还没加入树结构等等东西,只是测试三段LSTM train_FedAvg: 不是bench,这个数据集分布和STSL不一致 train_SL: 也不是bench,这个数据集分布和STSL不一致 * 以下是正式代码 - data_extraction - data_extraction_root: 从原始数据中把符合要求的patients的数据每个人提取一个文件夹 - data_cutting: 把提取的patients数据随机划分到不同医院中 - healthcare_draw: 可视化对应文件的数据分布 - mission_planner - 工具性质 - healthcare_download.py: 将当前Cube记录的树状数据下载下来,便于可视化 - 训练性质 - Cube: 树状结构,以及对树的操作,发起训练 - Node: 结点结构 - mission_plan: 加入了优化的STSL训练,第15行的`optimization = True`决定是否优化 - mission_plan_compare: 用于比较STSL优化前后的通信量和数据持有率 - mission_plan_four: 比较有四段数据的训练(只是为了并行跑代码,三段和四段的区分在train中) - mission_SL: bench中的SL,每次只选共有patients最多的路径训练一次,即不可以灵活切割分配模型(这个和原始的SL框架不同) - rank_communication - client 定义hospital在排序时的行为 - rank_main 多进程进行多client的排序 - Train - 工具性质 - config: 训练中的配置,如果改了段数,医院数,记得去里面修改对应的惩罚系数 - loggers: 用于生成log记录文件的,`logger.info(''.format())` - operation: 用于规划的时候的计算操作 - 训练性质 - train: 配合Cube.py的训练代码 - train_average3: 表示的是,所有数据均分为三份,依次训练 - bash: 集中式训练,其实就是调用了train_average3.py - train_all_for_one: 所有的数据,按照随机划分到三家医院后,一个批次训练完 - train_h_local: bench中的FL,每个client仅使用本地数据做训练(FL不需要树结构,因为本地client是把local data中一个patient的数据组织起来作为一条时序数据,并不需要梳理batch) - SL: bench中的SL,每个Client仅适用本地数据训练模型的第一部分(第一个LSTM单元),server在无数据输入(全零输入)的情况下训练第二部分(第二个和第三个LSTM单元),属于固定划分,之间没有关联 - models - 一些数据处理 - models.py 模型初始化 - models_four.py 四段输入的模型,0,1,2,2,最后两段需要来一个取平均 运行顺序: 1. data_extraction_root.py 将三张表格按照患者ID进行切分,保留有两次就诊记录,每次记录超过24h的患者数据 2. data_cutting.py 将患者数据随机切分为三段,并随机划分给四家医院中的三家 3. rank_main.py 为患者数据排序出就诊顺序,记录到ranks.csv中 4. mission_plan.py 划分训练集、测试集,构建Cube,并以交叉验证方式训练,最后测试 5. mission_plan_optimize.py 带有优化的规划 6. bash.py 集中式 7. train_h_local.py 联邦学习 8. SL.py 分裂学习 9. mission_plan_four.py 四段的学习(只是为了并行跑代码) 10. 这里是CPU版本,GPU版本的在:https://gitee.com/ahaBCD/STSL_gpu