本文共 2071 字,大约阅读时间需要 6 分钟。
BP(Back Propagation)神经网络是由Rumelhart和McCelland等于1986年首次提出的一种多层前馈神经网络,相关研究发表在Nature期刊上。BP网络通过误差逆传播算法实现训练,能够学习和存储大量输入-输出模式映射关系,是现今应用最广泛的神经网络模型之一。
BP算法解决了多层感知器在获取隐层权值时遇到的瓶颈。其基本思想是通过正向传播和反向传播两个过程实现训练。正向传播时,输入样本从输入层逐层传递至输出层。若输出与期望不符,则启动反向传播阶段。反向传播时,误差从输出层逐层向输入层反传,并分摊给各层单元,据此调整权值和阈值。
BP网络的功能特性主要由以下三个要素决定:
BP网络的训练分为前向传输和逆向反馈两个阶段:
训练过程多趟迭代,每轮使用所有训练集记录。训练终止条件包括迭代次数或预测准确率达到设定值。
网络设计时需从以下方面考虑:
BP网络存在以下主要问题:
为解决上述问题,BP网络常采取以下改进措施:
以下为BP网络的MATLAB实现示例:
function run(varargin) gui_Singleton = 1; gui_State = struct(...) gui_Callback = @run_OpeningFcn; nargout = [1:3]; [handles.output] = gui_mainfcn(gui_State, varargin{:});endfunction run_OpeningFcn(hObject, eventdata, handles) handles.output = hObject; set(handles.axes1, 'Visible', 'off'); set(handles.axes2, 'Visible', 'off'); [filename, cd1] = uigetfile('*.tif;*.TIF;*.JPG;*.jpg;*.bmp;*.BMP;*.jpeg;*.JPEG'); if ~filename return; end d = imread(filename); imshow(d); handles.I = d; handles.filename = filename; guidata(hObject, handles);endfunction pushbutton1_Callback(hObject, eventdata, handles) [filename, cd1] = uigetfile('*.tif;*.TIF;*.JPG;*.jpg;*.bmp;*.BMP;*.jpeg;*.JPEG'); if ~filename return; end d = imread(filename); handles.I = d; imshow(d); handles.filename = filename; guidata(hObject, handles);end 运行结果如下(请根据实际情况提供图片或代码输出):
function run_OutputFcn(hObject, eventdata, handles) varargout = {handles.output};end ##备注
如需完整代码或代写,请联系QQ 1564658423。
转载地址:http://eqle.baihongyu.com/