Keras学习一、Keras Sequential顺序模型1.模型构建1)顺序模型2)函数式模型2.模型编译3.模型训练4.模型评估1)evaluate #评估模型,返回数据的相关误差2)predict #为输入的样本生成输出预测
一、Keras Sequential顺序模型
1.模型构建
用keras定义的网络模型有两种方式:
-
sequential 顺序模型
-
keras 函数式 API模型
1)顺序模型
from keras.models import Sequential
import keras
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
model = Sequential([keras.layers.Dense(32, input_shape=(784, )),
keras.layers.Activation('relu'),
keras.layers.Dense(10),
keras.layers.Activation('softmax')])
# 等价于以下方法构建的顺序模型
model = Sequential()
model.add(keras.layers.Dense(32, input_shape=(784, ), activation='relu'))
# 或者为model.add(keras.layers.Dense(32, input_dim=784, activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
其中Dense的几个参数:
-
activation: 激活函数
-
kernel_initializer和bias_initializer: 权重和偏置项的初始化方案
-
kernel_regularizer.l1/l2和bias_regularizer.l1/l2: 权重和偏置项的正则方案,L1或L2
2)函数式模型
# 函数式模型
a = keras.layers.Input(shape=(32, ))
b = keras.layers.Dense(32)(a)
c = keras.layers.Dense(10)(b)
model = keras.models.Model(inputs=[a, b], outputs=c)
2.模型编译
无论是对怎样的问题,我们都通过compile()的方法
其中的一些参数:
-
optimizer #优化器,利用其性质,找到使损失函数值最小的最优值
-
loss #损失函数,模型视图最小化的目标函数
-
metric #评判标准,对于分类问题,一般我们定义为accuracy,当然,也可以变为其他的
# 模型编译
# 多分类问题
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 二分类问题
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# 均方误差回归问题
model.compile(optimizer='rmsprop',
loss='mse')
# 自定义评估标准函数
import keras.backend as K
def mean_pred(y_true, y_pred):
return K.mean(y_pred)
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy', mean_pred])
可用的优化器:
在模型训练后,如果想观察其网络结构,我们可以用model.summary(),并用print(model.output_shape)打印模型的输出。
3.模型训练
上面介绍的两种模型,无论是何种模型,我们在训练其模型时都是使用fit()函数进行训练
# 模型训练
model.fit(data, labels, epochs=5, batch_size=32)
4.模型评估
1)evaluate #评估模型,返回数据的相关误差
# 模型评估
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=100, verbose=1, sample_weight=None, steps=None)
其中参数介绍:
-
x_train #测试数据的numpy数组
-
y_train #测试数据的标签的numpy数组或列表
-
batch_size #表示每次评估的样本数,数据类型必须是整形或者为空,空则默认32
-
verbose #0或1,0就是安静模式,1就是进度条模式
-
steps #声明评估结束之前的总步数,默认为空
2)predict #为输入的样本生成输出预测
classes = model.predict(x_test, batch_size=100, verbose=0, steps=None)
其参数与上述参数差不多,这里不细讲。