目前我这边认为我们三(庭頫,我,晓文助理)要先弄清楚任务分配:

程序流程:

用户输入 -> 神经元分配 -> 分簇 -> 定簇(簇定位) -> 数据结构处理转换 -> 加载 -> BCE调度 -> BCE计算

对这些步骤的具体操作, 我就我目前知道的情况做了一个I/O表,但我怕我理解有偏差,我们就一起过一遍。

Step 1: 神经元分配

Input:用户输入,调用 n 个神经元,以及这n个神经元的连接信息和连接权重。

Target: 将用户的Request映射到具体的神经元上。

Output: Unkown

Step 2: 分簇

Input:n个neurons的id, 连接关系,权重。(以及其他一些参数)

Target: 将n个neurons根据一些算法(如借鉴上周四提到的Loihi核心优化映射算法,或者考虑其他算法,比如层次聚类算法,基于学习的聚类算法,以及进化算法等),划分成GNCs.

Output: GNCs

  • GNC的设计参数
    • 种群记录项 Epop
    • 神经元数量 N
    • Population个数 P
    • 权重weight W
    • 连接关系矩阵 C
    • GNC的设计约束会在转换过程中不断变化

其中有部分参数是用来评估分簇性能的。

Step 3:定簇(簇定位)

Input:上一步的输出(即GNCs)

Target: 尝试不同的空间填充曲线HSC等,或深度学习等方法,用上周四的评测代码(例)对算法进行评测。

Output: ReLinked GNCs

Step 4: 数据结构转换

Input: ReLinked GNCs

Target: 转化成庭頫那边的输入,即连接子图的资源描述,庭頫这边可以看看还有什么要补充的。

Output:

  • 子图描述,内含:
    • 连接图数量
    • 子图连接关系
    • 到达事件 \ _____\ 这两者应该不是由我的程序产生,但是可以
    • 离开事件 /  ̄ ̄/ 从我这里传进来
    • eg. Example of Subgraph Info to pass

    子图权重参数基地址直接用id(varaible)就能取到

  • 子图数据,内含:
    • Example of Subgraph DATA to pass

最后认为我们应该共享一下各自定义的class),这样会比较明白互相之间需要什么参数

我目前定义的class如下: