MLP多层感知器 Multi-Layer Perceptron
Part 1. 算法逻辑
实现经典问题——如何通过图像区分猫和狗
神经网络:建立模型,模仿人的思考机制
将“机器学习_逻辑回归”按照神经元的逻辑,组成逻辑网络。
解释: 假设自变量x[]和应变量y,机器学习只能做到 y= f(x)的拟合;而神经网络学习做到的是,生成中间变量 z[]=f(x[]),并拟合 y=g(z[]),从而得到 y=g(f(x[]))。这个过程好像神经元的生成过程。
简化理解: 就是多个逻辑回归、线性回归的“迭代”,越迭代越准确。
Part 2. 算法流程
Step 1. 建立 Sequential模型
from keras.models import Sequential
model = Sequential()
Step 2. 通过.add()
叠加各层神经网络
from keras.layers import Dense,activation
model.add( Dense(units=3,activation='sigmoid',input_dim=3) )
# 表示:添加一个隐藏层,隐藏层符合下述规则
# 该层(输出层)有units个神经元,输入层有input_dim个神经元
# 该层(输出)采用"sigmoid"即逻辑回归法,作为中间神经联系
model.add( Dense(units=1,activation='sigmoid') )
注:activation
激活参数 的常见参数
sigmoid
: 逻辑回归
softmax
Step 3. 通过.compile()
配置模型求解过程的参数
model.compile(loss='categorical_crossentropy',optimizer='sgd' )
# loss表示所使用的损失函数
# 参数优化器 采用 'sgd'
注:loss
损失函数 的常见参数
categorical_crossentropy
: 分类问题的损失函数
损失函数的选择,参考本链接
注:optimizer
参数优化器 的常见参数
'sgd'
'adam'
参数优化器的选择,参考本链接
Step 4. 模型训练
feature_size = (img1.shape[0])*(img1.shape[1])
x_train_format = x_train.reshape(x_train.shape[0],feature_size)
# 转换输入数据的维度
model.fit(x_train,y_train,epochs=5)
# 迭代epoch次训练
Step 5. 结果预测
pred_y_test = model.predict_classes(x_test)
Step 6. 转换输出结果的格式
from keras.utils import to_categorical
y_train_format = to_categorical(y_train)