准备更多2018-12-09
2018-12-09 本文已影响0人
FDuiv
这个结构真的典型:
图1 图21、开坑之前不小心发现了bug,进入复选操作的时候要清空最高优先组件的值,这样比较合理:
图3 图4 图52、发现开坑要准备很多东西,颜色系统,布局系统,还有输入输出的准备,真的多。稍微改改代码搞三种神经元,输入神经元,输出神经元,隐藏神经元,分别用正方形,三角形,圆形表示吧。这样就有足够的数据生成网络了;
图63、直接把网络写进组件管理类显然是不明智的,一是无法多线程或者cuda,二是没有灵魂,不好管理;或许我要做深度学习那就不好办了;所以要写一个新的类,名为SpikingNeuralNetwork,该类的作用是可以通过组件字典里面包含的所有组件信息生成神经网络:
图7 图8构造函数传入一个包含了所有组件信息的字典;
在设计器窗口的代码里面生成神经网络以及创造一个线程去运行它:
这三个函数分别为生成网络,启动线程,以及线程函数。图9然后利用委托把这前两个委托给控制器窗口去使用:
图10 图114、之前发现有一种神经元专门产生抑制信号的神经元,抑制性中间神经元,GABA这种物质能够使下一个神经元的信号总和下降,相当于深度学习的负权连接,只不过抑制神经元的所有连接都是负权连接,在神经网络中抑制信号的存在是很有必要的,抑制信号能加速网络信号模式从一个吸引子转换到另一个吸引子;
所以,要增加一种神经元类型,作为抑制性中间神经元,可以简单的在神经元类上面加上一个weight属性,用正负表示增强还是抑制。
增强神经元用红色表示,抑制神经元用蓝色表示,大概是这样的效果:
这是一个负反馈网络,当抑制性神经元兴奋后悔产生抑制信号,图125、为了能直观的观察信号的传递过程,需要做一个把信号映射成颜色的转换函数,所以基础颜色要更浅(50,0,0),深的颜色体现出信号的累加:
图13准备得差不多了,之后需要的在补,先把正向传播做了了⑧;