Library工程更新到 https://github.com/Millieen/TestNeuronNetwork
· 实现了前向传播的计算(单线程)
多核计算优化思路:
- 每个wi * ai + bi作为最小计算单元,使用一个对象。每个对象使用一个子线程计算单元并给出结果。
- 通过线程池控制线程(对象)数量,每个对象分配一个线程。线程池有空余的时候就创建新的对象用于计算。线程池无空闲的时候,就使用已有的空闲对象进行计算。使用一个队列来存放空闲的对象。
- 线程池的上限可以通过配置文件改变,默认情况下为CPU线程数量。
- 另一个优化思路:定义矩阵操作,在矩阵操作内部使用算法和多线程优化。而不是使用很多对象进行计算。这样更符合认知。
· 实现了反向传播Sigmoid函数求导,以及计算dW,db的部分函数。(尚未完成)
- 实现中一度迷惑于dW的维数莫名其妙多出来一个,后来才发现需要计算所有的dZi取平均后的值。
- 截止到第一课第二周第一节,还没有到多层的部分,所以反向传播暂时无法输出当前层的dA给上一层继续进行反向传播。
- 需要通过矩阵操作进一步简化。