在烤咖啡豆时可以控制的两个参数是温度和加热时间,下图给出了不同温度和加热时间下咖啡豆的好坏示意图,其中红叉对应好咖啡,蓝圈对应坏咖啡。温度太低或时间太短或者温度过高,时间太长都不会烤出好的咖啡,只有在三角形内的点才对应好咖啡。
假设温度200加热时间17,我们如何推断出者是否为好咖啡。
我们将x设置为两个数字的数组(200摄氏度和17分钟),创建第一个隐藏层(3个神经元,激活函数为sigmod),创建输出层(1个神经元,激活函数为sigmoid),最后输出结果大于0.5则为好咖啡。
代码创建矩阵(二维向量)
所以针对输入特征可以这样表示
早期的搭建方法是:初始化输入x,创建第一层并计算,然后创建第二层并计算
另一种搭建方法不需要手动获取数据并将其传递到下一层,我们可以将创建的两个层按顺序串联起来。
输入为一维数组,下标1_1的意思是第一层第一个神经元的参数,计算过程如下图
定义一个神经网络单层的函数dense(),该函数的作用是通过输入并给定当前层参数经计算返回下一层的激活,以左边单层为例,W是一个2*3的矩阵,列数为3,所以units=3,a_out初始化为[0 0 0],然后通过for循环计算,第一次循环采用W、b、a_in的第一列进行第一个神经元的计算,通过循环三次,将三次(三个神经元)的激活值存到a_out中,也就得到了该层网络的激活值(输出)。
依次将各层连接在一起,构建sequential()函数,实现前向传播。