前言
深度学习是通过深度神经网络来解决问题的方法,在此记录五步法构建基本模型。
五个步骤
1、构造网络模型
2、编译模型
3、训练模型
4、评估模型
5、使用模型进行预测
构造–编译–训练–评估–预测
四种基本元素
1、网络层结构
由5种基本结构和其他层结构组成。
2、激活函数
如sigmoid、relu、softmax,最后的输出用softmax,其余基本用relu。
3、损失函数
多分类:categorical_crossentropy 对数损失
二分类:binary_crossentropy 对数损失
回归:mean_squared_error 平均方差损失 mean_absolute_error 平均绝对值损失
4、优化器
如SGD随机梯度下降、Adam等
六种基本层结构
4种元素之一的网络结构是由6种基本层结构所构成的,3种主模型–深度学习的主要3种结构。
1、全连接层Dense
万能的函数近似器。使用场景广泛。
2、卷积层
conv1d、conv2d 非常适用于处理图像数据。
3、循环层
LSTM、GRU 处理语言、文本等序列数据。
4、防止过拟合层
Dropout、池化层等。
5、层间接合层
其作用是在上面3种主模型和输入的数据之间进行转换。如Flatten层是卷积层和Dense层之间的数据格式转换层。
6、辅助层
主要为3种主模型服务。如Activation层用于为Dense层指定激活函数。
keras中提供的Sequential容器实现过程式构造,使用add方法添加层结构。
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(units=64, input_dim=100))
model.add(Activation("relu"))
model.add(Dense(units=10))
model.add(Activation("softmax"))
1、编译模型
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
编译时需要指定3项:loss损失函数、optimizer优化器、metrics参数矩阵(辅助设置)
loss只想使用最基本功能时,指定字符串名称即可。配置更多参数则需要调用对应的类来生成对象。为sgd加上nesterov动量
from keras.optimizers import SGD
model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=0.001, momentum=0.9, nesterov=True)
2、训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)
3、评估模型
使用的测试数据是没有训练过的数据
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
4、使用模型预测
调用predict函数,传入要预测的数据
classes = model.predict(x_test, batch_size=128)