一、简介
Keras是一个高层神经网络API,其基于TensorFlow, CNTK以及Theano等后端框架,使构建深度学习模型变得简单快速。Keras主要具有以下特点:
- 用户友好:Keras的API定义简单、代码易读、模块化。
- 模块化:Keras采用模块化设计,允许用户轻松添加自定义层和损失函数等。
- 可扩展性:可组合的模型架构,用户可以自由组合不同的模块以实现复杂的架构。
- 简单易用:仅使用几行代码即可完成神经网络的构建与训练,对于入门有极大的帮助作用。
二、模型构建
1. 建立模型
建立一个模型,只需要一行代码:
from keras.models import Sequential
model = Sequential()
使用Sequential()可以轻松创建顺序模型,这种模型中每一层对应一个又一个的神经网络层。
2. 添加层
在创建一个Sequential模型之后,可以使用add()方法添加层。下面代码展示如何添加Dense层:
from keras.layers import Dense
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
这段代码片段展示了Sequential模型中添加两个Dense层。第一个Dense层包含64个神经元,使用relu激活函数,而输入数据有100个特征。第二个Dense层是一个全连接层,包含10个神经元,使用softmax来使输出符合分类问题的概率分布出。
三、编译模型
在添加好各个层后,需要使用compile()编译模型。其需要传递3个参数:
- 优化器optimizer。它可以是现有优化器的字符串标识符,如rmsprop,adagrad,或者是Optimizer类的实例。
- 损失函数loss。多分类问题的损失函数通常是categorical_crossentropy,二分类问题的损失函数是binary_crossentropy,均方差 mse用于回归问题中。
- 指标列表metrics。对于分类问题,常使用 metrics=['accuracy']。
下面是编译模型的示例代码:
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
四、训练模型
训练模型一般是使用fit()方法,下面是一个训练模型的示例:
model.fit(x_train, y_train, epochs=5, batch_size=32)
x_train是训练数据,y_train是训练数据的标签,epochs表示迭代次数,batch_size表示每次迭代所处理的数据量大小。在训练模型期间,可以使用validation_data参数传入验证集数据来监测模型的拟合情况。
五、评估模型
在训练好模型后,还需要对其进行评估,使用evaluate()方法。
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
表示对测试集进行评估,返回误差率与准确率等信息。
六、保存模型
一个训练好的模型可以使用save()方法进行保存,下面是示例代码:
from keras.models import load_model
model.save('path_to_my_model.h5') # creates a HDF5 file 'path_to_my_model.h5'
del model # deletes the existing model
# returns a compiled model
# identical to the previous one
model = load_model('path_to_my_model.h5')
此外,如果只需要保存网络结构,可以使用to_json()移植模型。
总结:
Keras是一个轻量级的深度学习框架,易于使用且功能强大,可以轻松、快速地构建和训练深度学习模型。本文总结了Keras的模型构建、编译、训练、评估和保存模型等步骤,希望对初学者有所帮助。