以前编写的对猫的识别的算法准确率仍然不是很高,主要是由于其是单神经元网络,太过简单,层数过低。git
神经网络分为单神经元和多神经元,多神经元神经网络又分为浅层和深层,下面介绍一下多神经元网络中的若干概念。github
多神经元网络流程是同单神经元网络相同的,只不过层数更多。下面是一个多神经元神经网络,其中间多了一层,但实际中可能远不止一层:算法
先来复习一下以前学过的单神经元神经网络:markdown
运算流程:网络
再来对比一下多神经元网络,咱们把多神经元网络单个拆分红一个一个单独的神经元来看:框架
其具体运算流程以下:oop
咱们先算出第一层(不带输入层)的3个神经元的a=\sigma(z),而后再将这3个a当作x输入到第二层的神经元中进行计算。上面的w^{[i]}表示的是第一层的神经元关于输入层x的权重,因此w^{[i]}是一个33的矩阵,由于第一层有3个神经元,每个神经元都有3个特征输入,共计33。性能
反向传播计算也同样,先算出第二层的梯度dw和db,而后再向第一层传播,算出第一层3个神经元的dw和db。学习
像神经网络的层数、每层神经元的个数都是超参数,和前面提到的学习率同样,须要慢慢调才能找到一个最合适的值,调的方式大概有几种:spa
其实最主要用到的仍是手动调参,不一样的项目背景下有不一样的原则,建议从一个较小数值开始,如 果欠拟合而后慢慢添加更多的层和神经元,若是过拟合就减少层数和神经元。
\