神经网络的结构:输入层--隐藏层--输出层
通俗理解:神经网络分几层,每层有每层的输入,经过该层运算后输出到下一层进行输出
神经网络的架构问题:想要多少隐藏层?每个隐藏层有多少个神经元(每层隐藏单元数量)?
人为选定的特征作为输入由输入层进入,经隐藏层运算后简化了原本的输入的特征,综合为一个矢量作为输出层的输入,输出层运算后输出最后的结果,这个最后的结果也称做神经网络的最终激活/最终预测。
神经网络的最终激活/预测是怎样自主实现的?(通过大量训练集来预测?);隐藏层是否就是前文所提到的各类回归模型,回归模型在这儿的作用是什么呢?
不同隐藏层中的神经元负责不同特征的检测,这就是神经网络的非凡之处:在不同的隐藏层中学习这些特征检测器。神经网络可以自主地将所需检测的物体特征进行分层识别,按照由小到大或其他顺序(eg.人脸识别--计算机视觉应用)
神经网络中的层:
以一层为例:输入层,也称为0层,可以是多个特征(构建成一个向量);隐藏层,称为1层,隐藏层中可以有多个神经元(神经元在数学上表示即为各个回归模型的方程,只是参数w/b不同)隐藏层的输出是神经元的计算的结果,构建成新的向量递给输出层;输出层,也称为2层,输出的内容需要经过输出层神经元的计算(输出的神经元可能是另外一个回归模型),由于输出层神经元仅有一个,因此输出层的内容仅仅是一个数字,一个标量,而不再是一个向量。(eg.烤咖啡豆)
输出层输出标量后,可在末端设置一个判决器,判断输出的这个标量与设置好的阈值的大小,由比较情况输出不同的结果,这就是神经网络的预测。由于计算是从左往右移,这个顺序也叫前向预测/前向传播。
Tensor:一种数据类型,用于在矩阵上充分存储和执行计算。常常把tensor看作是矩阵的一种计算方式。
Numpy:python中一种开源的数值计算扩展。
程序实现:如何实现数值之间的转化?由矩阵转化为数组
在tensorflow中实现对神经网络的推断:
构建第一层和第二层的神经网络:
Layer_1=Dense(units=3,activation=‘’sigmoid’’)
第一层的神经元为3个 激活函数为
Layer_2=Dense(units=1,activation=‘’sigmoid’’)
model=Sequential([layer_1,layer_2])把第一、二层放入一个顺序函数中
神经网络模型为两层按前向传播实现,即先第一层再第二层
x=np.array(....)
y=np.array(....) 搭建训练集,将输入特征的x和结果y输入进行训练
下一步训练模型,要用到以下函数:
model.compile(...)
Model.fit(x,y) 表明神经网络是将第一层和第二层拉紧进行计算的,并且在给定的数据上进行训练
最后在这个已经训练好的模型上做预测,只需要调用模型进行预测:
model.predict(x_new)