神经网络的作用
神经网络可以解决分类任务和回归任务,通常我们解决的任务也就是分类和回归。比如分类任务中有
- 关于糖尿病人诊断:通过已有13个特征和多个数据样本,可通过病人表现的特征来判断病人是否患有糖尿病。
- 关于手写体识别方面也是:通过分析图片来判断这张照片是0-9中的哪一个数字。
神经网络实质上是在拟合函数,可以通过调整网络的层数、层种类、激活函数、阈值等来拟合函数。例如一个三层网络拟合出的函数的显示表达是f(W3 * g(W2 * h(W1 * x + b1) + b2) + b3)。一个输入层,一个隐层,一个输出层。
我们使用python的keras建立网络:
import keras
from keras import models
from keras import layers
model = models.Sequential()
model.add(layers.Dense(units=10,activation='relu',input_shape = (x_train.shape[1],)))
model.add(layers.Dense(units=10,activation='relu'))
model.add(layers.Dense(units=1))
model.compile(optimizer='sgd', loss='mse',metrics=['mae'])
model.fit(x_train,y_train,epochs=20,verbose=1)
简单解释一下,网络model使用的层是全连接。全连接就是上一层的每个节点与下一层的每个节点都连接,同一层的节点不连接。上面的三层网络图就是全连接形式。命令是 layers.Dense()
model的层种类选好后就建立网络,建立网络结构的过程就是在不断的加层的过程,添加层的命令是model.add()
现在我们有了网络结构,但是想要得到一个效果好的网络还需要有反馈来调整网络来时网络变好就有了编译环节。命令是model.compile()
这样我们就有完整的神经网络了,我们现在就可以用model.fit()
命令来训练我们的网络。