Keras学习

Keras学习

 

一、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)

其参数与上述参数差不多,这里不细讲。

原文地址:https://www.cnblogs.com/minyuan/p/13039784.html