Keras介绍
简介
Keras是更高层的深度学习框架,它可以运行在其它的底层框架上面,包括TensorFlow和CNTK。也就是说,keras内部会调用tensorflow来完成任务。换句话说,就是keras比tensorflow更加方便。
导入keras
# 根据代码需要导入相应的函数
from keras import layers
from keras.layers import Input, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D
from keras.layers import AveragePooling2D, MaxPooling2D, Dropout, GlobalMaxPooling2D, GlobalAveragePooling2D
from keras.models import Model
from keras.preprocessing import image
from keras.utils import layer_utils
from keras.utils.data_utils import get_file
from keras.applications.imagenet_utils import preprocess_input
import pydot
from keras.utils.vis_utils import model_to_dot
from keras.utils import plot_model
import keras.backend as K
K.set_image_data_format('channels_last')
Keras构建模型
def model(input_shape):
# 定义一个占位符X_input,input_shape中包含了占位符的维度信息.
X_input = Input(input_shape)
# 给占位符矩阵的周边填充0
X = ZeroPadding2D(padding = (3, 3))(X_input)
# 构建一个卷积层,并对结果进行BatchNormalization操作,然后送入激活函数
X = Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0')(X)
X = BatchNormalization(axis = 3, name = 'bn0')(X)
X = Activation('relu')(X)
# 构建MAXPOOL层
X = MaxPooling2D((2, 2), name='max_pool')(X)
# 将矩阵扁平化成向量,然后构建一个全连接层
X = Flatten()(X)
X = Dense(1, activation='sigmoid', name='fc')(X)
# 构建一个keras模型实例,后面会通过这个实例句柄来进行模型的训练和预测
model = Model(inputs = X_input, outputs = X, name='HappyModel')
return model
- keras编程中喜欢复用变量,这点与我们使用numpy和tensorflow编程时不同。在之前的实战编程中,我们会定义很多个变量,
X
,Z1
,A1
,Z2
,A2
,等等。而在上面的代码中,X作为每一层的输入,然后这一层的输出又会存储到X中。
使用keras框架训练测试步骤
-
调用上面的函数来创建一个模型实例。
-
调用
model.compile(optimizer = "...", loss = "...", metrics = ["accuracy"])
来编译那个模型实例Model.compile('adam', 'binary_crossentropy', metrics=['accuracy'])
-
调用
model.fit(x = ..., y = ..., epochs = ..., batch_size = ...)
来训练模型实例Model.fit(X_train, Y_train, epochs=40, batch_size=50)
-
调用
model.evaluate(x = ..., y = ...)
来测试模型preds = Model.evaluate(X_test, Y_test, batch_size=32, verbose=1, sample_weight=None)