鲁稼苇
数据技术处
随着大数据技术的发展,人们都意识到了数据的重要性。比如根据客户的操作行为进行智能营销,根据客户资产信息与相关关系人资产信息进行智能风控,根据交易行为进行智能反洗钱。而要从海量的数据中挖掘出这些潜在的信息,就需要借助于机器学习与深度学习算法。然而深度学习模型的构建,若是完全依赖自己从头开发,是非常耗时耗力的,且目前大量新颖而又效果优异的模型层出不穷,快速复现一个深度学习模型并开始训练才是王道。因此借助于已有的函数库,快速上手是必不可少的。
Keras原来是独立的一个库包,后来被纳入了tensorflow之中。它和tensorflow一样,也是个python库,不过里面都是神经网络的东西。深度学习要训练一个模型,而一个模型中有很多小组件。比如
1. 用什么激活函数,relu还是sigmoid;
2. 用什么优化器,gradient descent还是adam;
3. 要不要加个正则避免过拟合,用L2 regularization呢还是dropout呢;
4. 要不要用batch normalization;
5. .....
这些都自己手写的话,费时费力。而Keras已经把这些小组件写好了,只需要调用就ok了!
Keras中搭建一个模型,然后训练、测试一共分以下几步:
1. 定义模型;
2. 初始化并编译模型;
3. 用训练集进行调试;
4. 用测试集进行测试。
最终训练得到的模型,也可以通过调用函数绘制出来。
因此本文将从如上构建模型的几个阶段来介绍Keras的使用。
一、模型定义
def HappyModel(input_shape):
# 根据输入的矩阵形状input_shape:(height, width, channels),定义输入变量
X_input = Input(input_shape)
# Zero-Padding: 对X_input周围填充0
X = ZeroPadding2D((3, 3))(X_input)
# 7*7步长为1的卷积 -> Batch Normalization -> RELU激活函数
X = Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0')(X)
X = BatchNormalization(axis = 3, name = 'bn0')(X)
X = Activation('relu')(X)
# 2*2的MAXPOOL
X = MaxPooling2D((2, 2), name='max_pool')(X)