Keras Sequential 顺序模型

创建Sequential模型

通过网络层实例的列表传递给Sequential的构造器

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(10),
    Activation('softmax'),
])

简单使用.add()方法将各层添加到模型中

model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))

指定输入数据的尺寸

模型需要知道它所期望的输入的尺寸,顺序模型的第一层需要接受关于尺寸的信息(其他层可以推断)

  • input_shap 表示尺寸的元组(整数或None,None表示任何整数) ,不包含batch大小。
  • 某些2D层(Dense)支持通过input_dim指定尺寸,某些3D支持input_dim和input_length参数。
  • batch_size固定batch大小。

batsize = 32
input_shap=(6,8)
每一批输入的尺寸是(32,6,8)

model = Sequential()
model.add(Dense(32, input_shape=(784,)))
# 等价于
model = Sequential()
model.add(Dense(32, input_dim=784))

模型编译

通过compile配置学习过程

  • 优化器optimizer
    • 现有优化器的字符串标识:rmsprop或adagrad
    • Optimizer类的实例
  • 损失函数loss,模型试图最小化的目标函数
    • 现有损失函数的字符串标识符:categorical_crossentropy 或 mse
    • 目标函数
  • 评估标准metrics(metrics = ['accuracy'])
    • 现有的标准的字符串标识符
    • 自定义的评估标准函数
# 多分类问题
model.compile(optimizer='rmsprop',
              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])

模型训练

对输入数据和标签的Numpy矩阵上进行训练。
通常使用fit函数

# 对于具有 2 个类的单输入模型(二进制分类):

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

# 生成虚拟数据
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(2, size=(1000, 1))

# 训练模型,以 32 个样本为一个 batch 进行迭代
model.fit(data, labels, epochs=10, batch_size=32)
# 对于具有 10 个类的单输入模型(多分类分类):

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# 生成虚拟数据
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))

# 将标签转换为分类的 one-hot 编码
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

# 训练模型,以 32 个样本为一个 batch 进行迭代
model.fit(data, one_hot_labels, epochs=10, batch_size=32)

你可能感兴趣的:(Keras Sequential 顺序模型)