读Joone源代码有感(2)

   继续谈我在读Joone源代码过程中的体会
1)网络的终点是一个TeachingSynapse,它和一般Synapse不同在于它内含了一个TeacherSynapse,TeachingSynapse就像个代理,实际更新权矩阵和数值的存储是在TeacherSynapse上完成的。TeacherSynapse和一般Synapse也不同,它是一个只有fwdPut和revGet方法的Synapse(fwdGet和revPut方法为空),其实也不难理解,因为TeacherSynapse是最后一个Synapse,并且没有输出Layer层,所有不需要fwdGet和revPut方法。
2)TeacherSynapse继承AbstractTeacherSynapse,AbstractTeacherSynapse又继承Synapse,AbstractTeacherSynapse主要差别在于forward和revGet方法,Synapse的forward方法只是把InputLayer传来的值储存在outs对象中,而AbstractTeacherSynapse的forward方法把理想值和实际输出值做差,把误差值储存在outs中以供fwdGet用,并且把各个差值做平方和最后除以2的运算得到当前epochs的GlobalError。revGet方法也很不一样,它直接调用fwdGet,把刚才fwdPut储存的值拿出来以供回馈用

你可能感兴趣的:(源代码)