Keras 模型构建概览
Keras 模型构建主要包括5个步骤:
定
义
(
d
e
f
i
n
e
)
,
编
译
(
c
o
m
p
i
l
e
)
,
训
练
(
f
i
t
)
,
评
估
(
e
v
a
l
u
a
t
e
)
,
预
测
(
p
r
e
d
i
c
t
i
o
n
)
\color{red}定义(define),编译(compile),训练(fit),评估(evaluate),预测(prediction)
定义(define),编译(compile),训练(fit),评估(evaluate),预测(prediction)。
1.1 定义模型
model = Sequential()
model.add(Dense(2))
- 定义模型是 Keras 构建神经网络的第一步,这里由Sequential类生成了一个实例,然后添加了一个Dense类型的层(layer),参数2表示该层神经元的数量。
- 一般层的添加顺序即是各层连接的顺序,也是数据流经模型被处理的顺序。
- 模型添加的 第 一 层 必 须 指 定 输 入 参 数 的 数 量 \color{red}第一层必须指定输入参数的数量 第一层必须指定输入参数的数量,指定方式由具体模型类型而定。
1.2 编译模型
model.compile(optimizer='sgd', loss='mse', metrics=['accuracy'])
- 定义好模型之后我们需要通过编译(compile)来对学习过程进行配置,我们可以为模型的编译指定各类参数包括:优化器
optimizer
,损失函数loss
,评估指标metrics
等。 - 编译的过程也是 Keras 将我们刚定义好的模型转化为底层平台(TensorFlow 或 Theano)结构描述过程,底层平台会负责后续的计算任务,GPU、CPU 的调度选择,分布式运行等。
1.3 训练模型
history = model.fit(X, y, batch_size=10, nb_epoch=100)
- 编译后的模型就可开始训练(
fit
)了,fit
的过程可以简单的理解为就是通过测试数据来确定神经元间连接权重(weight)的过程。 - 测试数据分为两部分,矩阵类型的输入数据
X
,和对应的数组类型的输出y
数据。
神经网络训练通常采用的是反向传播(Backpropagation)算法,因此我们需要指定训练周期nb_epoch和每次计算的数据量batch_size。 - 训练完成后,history 会保存模型训练后的相关描述。
1.4 评估模型
loss, accuracy = model.evaluate(X, y)
- 训练后的模型,我们需要对其性能进行评估,以此来确定训练效果是否达到了我们的预期。
evaluate
方法的参数X
,y
与fit方法的数据类型是一样的,一般会选择用测试数据进行评估。
1.5 数据预测
predictions = model.predict(x)
- 当模型的性能评估达到要求后,我们就可以用训练好的模型在新的数据上进行预测了。
- predictions是预测返回的结果,数据格式与输出层的输出格式相同。
2. 一个完整的示例
# 简易多层感知神经网络示例
from keras.models import Sequential
from keras.layers import Dense
import numpy
# 加载,预处理数据集
dataset = numpy.loadtxt("XXXX", delimiter=",")#数据集需要修改,并与代码放置到同一个根目录下。
X = dataset[:,0:8]
Y = dataset[:,8]
# 1. 定义模型
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 2. 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 3. 训练模型
history = model.fit(X, Y, nb_epoch=100, batch_size=10)
# 4. 评估模型
loss, accuracy = model.evaluate(X, Y)
print("\nLoss: %.2f, Accuracy: %.2f%%" % (loss, accuracy*100))
# 5. 数据预测
probabilities = model.predict(X)
predictions = [float(round(x)) for x in probabilities]
accuracy = numpy.mean(predictions == Y)
print("Prediction Accuracy: %.2f%%" % (accuracy*100))
具体其他形式的神经网络参考:《Python深度学习》第五章-1(CNN简介)读书笔记
3. 总结
本篇主要介绍了 Keras 神经网络模型构建的主要步骤及其作用。我们通过一个简单的示例向您展示了 Keras 模型构建的整个过程。