关于#BP#的问题,如何解决?

BP神经网络的迭代次数设置为20,误差阈值设置为0.7,学习率设置为0.001是否合理

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/201561
  • 这篇博客你也可以参考下:八数码问题的三种解决方式,其二:深度优先搜索 加自己的一些疑惑
  • 除此之外, 这篇博客: 【学习笔记】基于遗传算法的BP神经网络优化算法中的 (3)设置网络初始权值、阈值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在上文的网络创建部分中,已经计算出了各层的权值、阈值个数,接下来只需要进行赋值即可

    % 设置网络初始权值、阈值
    weight1_num = input_num*hidden_num;     % 输入层到隐含层的权值数
    weight2_num = hidden_num*output_num;    % 隐含层到输出层的权值数
    
    weight1 = X([1:weight1_num]);                                                   % 输入层到隐含层的权值
    threshold_1 = X([weight1_num+1:weight1_num+hidden_num]);                        % 隐含层阈值
    weight2 = X([weight1_num+hidden_num+1:weight1_num+hidden_num+weight2_num]);     % 隐含层到输出层的权值
    threshold_2 = X([weight1_num+hidden_num+weight2_num+1:end]);                    % 输出层阈值
    
    % 赋值
    net.iw{1,1} = reshape(weight1,hidden_num,input_num);        % 输入层到隐含层的权值
    net.lw{2,1} = reshape(weight2,output_num,hidden_num);       % 隐含层到输出层的权值
    net.b{1} = reshape(threshold_1,hidden_num,1);               % 隐含层阈值
    net.b{2} = reshape(threshold_2,output_num,1);               % 输出层阈值
    

    关于net.iw、net.lw和net.b的解释:

    % net.iw为输入层到网络层(隐含层+输出层)的权值
    % 通过访问net.iw{i,j}可以获得第i个网络层来自第j个输入向量的权值向量
    % 本案例中,net.iw{1,1}即表示第1个网络层(即隐含层)来自第1个输入向量的权值向量
    
    % net.lw为一个网络层到另一个网络层的权值
    % 通过访问net.lw{i,j}可以获得第i个网络层来自第j个网络层的权值向量
    % 本案例中,net.lw{2,1}即表示第2个网络层(即输出层)来自第1个网络层(即隐含层)的权值向量
    
    % net.b为各网络层的阈值
    % net.b{i}为第i个网络层的阈值向量
    

    关于神经网络中其他参数的解释可以参考书籍《神经网络模型及其MATLAB仿真程序设计》

能跑起来其实就行吧。
如果没底的话,具体参数看看相似方向研究的别人文献,然后需要自己调试一下可能就还好
迭代20次……感觉有点少,matlab的bp神经网络工具箱默认最多迭代1000次呢
不过一般bp神经网络不以达到最大迭代次数作为停止条件,而更多的以误差MSE足够小/训练集和测试集有一方疑似出现过拟合/曲线收敛这样的指标作为停止的信号,会更科学一些。