www.pudn.com > bp_cpp.zip > History_TODO
[简介] 项目名称: ANN 项目全称: Artificial neuron net 项目开始: 2004年3月份 发 起 者: 单兰山 (slsLingJing@sohu.com) 项目描述: 发展一套函数库,用来支持神经网络运算。 当前版本: 0.01.11 [当前任务] 完善hopfield网络的基本功能 [历史] 2004-06-01 0.01.011 - 在文件neuron_group.cpp中添加了新的类:NeuronSimpleGroup,用来描述一组神经元 - 文件bp/bpneuron.h和bp/bpneuron.cpp中的类BPLayer即BP网络神经元层改由NeuronSimpleGroup派生 原来从NeuronGroup派生, 该类即包括简单的神经元组,也包括由神经元组组成的组, 因此从前者派生能获得更详细的能力 - 在文件hopfield/hfneuron.h, hopfiled/hfneuron.cpp.cpp中实现了类:HFSimpleGroup 用于描述一组hopfield神经元, 该类从NeuronSimpleGroup派生 2004-05-24 0.01.010 - 样本文件的读写 - 添加了设置BP网络学习速率的函数 2004-05-16 0.01.009 - 实现了一个读取和存储BMP文件的类Bitmap,并实现了简单的读写想素的函数 目前支持24位真彩图像和单色位图两种Bmp文件 - 实现了一个从特定类型的Bitmap类抽取输入向量接口的类 2004-05-11 0.01.008 - 添加了新的函数族:正弦函数sin和一阶导数为双取正切函数六次方的函数sech6 - 为每个神经元、BP网络及其层都添加了设置输出函数的方法 - BP网络的序列化更新,考虑了神经元的输出函数名称 - 实现了样本集类AnnSampleSet, 并提供了一些常见的样本:比如与、或运算,宇称2~9运算的训练样本 - 实现了专么为计算函数提供缓存的类FuncCache,并用它缓存了sech6函数, 但是效果并不理想 2004-05-08 0.01.007 - 网络随机化的时候加大了随机的程度,否则不容易落到收敛区,特别是小的随机值往往是难收敛的地区 - 向量类添加了判断两个向量相等和输出到标准输出的方法 - 向量容器类添加了方法顺序地访问每个向量,以前只能随机地 - 添加了新的函数族:阶跃函数 - 符号函数 - 处理多个值的函数进行了扩展,如果目标数组为NULL,则直接在输入数组更改 - BP网络的转化函数converse更正为convert - BP网络增加了转化和学习计数 2004-05-06 0.01.006 - BP神经元网络的序列化 - 编写一个例程来使用这个库 - 向量容器接口和类 - 向量接口扩充了一下,可以一次设置和取多个值 - 为每个层增加了输出值固定为1的神经元,结果发现没有它,网络就只会在一个中间的位置摆来摆去 2004-05-04 0.01.005 - 实现了BP网络的学习的基本算法 - BP神经元网络的初始化 - 神经元网络的随机化 2004-05-02 0.01.004 - 在文件vector.h, vector.cpp中写了一个类AnnVecotr实现向量接口IAnnVector - 双曲正切函数导数的推导有错误,忘记了一个因子2, 发现我经常把数学公式推倒错了,看来以后要尽量用书上的 - 将各个函数组成函数族,并定义了函数族类和函数族工厂来依据名称取得函数族 - 计算函数在原来的主函数和其导数的基础上增加了由主函数值到导数值的计算函数, 并为这三种函数各添加了对于向量的计算,原来的是针对单个值的。 因此现在每个函数族有6个计算函数 2004-04-25 0.01.003 - 使用Visual Studio 2003 编译通过了整个库 - 在文件neuron.h, neuron.cpp中为Neuron类添加了另外一个函数接受其他神经元的连接 - 定义了向量和转换器的接口 - 定义了BP网络的神经元、层和网络的类 - BP网络对输入向量响应的计算 - BP网络层与向量间的导入与导出 2004-03-07 0.01.002 - 推导了双曲正切函数和S型函数的导数,推导完后,我惊讶地发现,他们是一样的。并用函数实现了他们: adf_hyperbola_tangent, adf_sigmoid - 在文件neuronobj.h, neuronobj.cpp中实现了类NeuronObj作为神经元和神经元组的统一基类 - 在文件neuron_group.h, neuron_group.cpp中实现了类神经元组NeuronGroup, 并为其实现了一个添加神经元的函数: 2004-03-01 开始:0.01.001 - 在文件neuron.h, neuron.cpp中实现了类: 轴突类 Axone 突触类 Synapse 神经元基类 Neuron - 在文件annfunc.h, annfunc.cpp中实现了神经元输出函数: 双曲正切函数: af_hyperbola_tangent S型函数: af_sigmoid 正弦函数和余弦函数: af_sin, af_cos 阀值函数: af_value [长期任务] - Hopfield网络 - 自适应网络 - 元胞自动机的实现 - 节奏和结构的学习 - 按照梯度下降的学习算法 - 网络群 - 网络速度优化装箱器 - 测试单精度的速度 - BP神经网络学习速度的优化 - 位图处理和GUI接口 - 样本的批量学习 [疑问] - 为什么BP网络从文件中读出来的虽然随机化了,但是总有相同的训练步数