本文为keras中文api的梳理,keras中文
Keras 模型keras模型分为:Sequential 顺序模型 和 使用函数式 API 的 Model 类模型,本系列使用sequential模型。
顺序模型是多个网络层的线性堆叠,使用时需要导入Sequential,Dense, Activation,Dropout等
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential()Dense
keras.layers.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None) # 参数 units: 正整数,输出空间维度。 activation: 激活函数 (详见 activations)。 若不指定,则不使用激活函数 (即,线性激活: a(x) = x)。 use_bias: 布尔值,该层是否使用偏置向量。 kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。 bias_initializer: 偏置向量的初始化器 (详见 initializers)。 kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。 bias_regularizer: 运用到偏置向量的的正则化函数 (详见 regularizer)。 activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。 (详见 regularizer)。 kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。 bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。
Dense 实现以下操作:output = activation(dot(input, kernel) + bias) 其中 activation 是按逐个元素计算的激活函数,kernel 是由网络层创建的权值矩阵,以及 bias 是其创建的偏置向量 (只在 use_bias 为 True 时才有用)。
顺序模型中的第一层(且只有第一层,因为下面的层可以自动地推断尺寸)需要接收关于其输入尺寸的信息。
model.add(Dense(32, input_shape=(16,))) # 现在模型就会以尺寸为 (*, 16) 的数组作为输入, # 其输出数组的尺寸为 (*, 32)激活函数
keras.layers.Activation(activation)
relu(0,x)、sigmoid(0->1)、tanh(-1->1)、elu、softmax、selu、softplus、softsign、linear等
Dropoutdropout是深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。主要用于防止过拟合。
keras.layers.Dropout(rate, noise_shape=None, seed=None) #参数 rate: 在 0 和 1 之间浮动。需要丢弃的输入比例。 noise_shape: 1D 整数张量, 表示将与输入相乘的二进制 dropout 掩层的形状。 例如,如果你的输入尺寸为 (batch_size, timesteps, features),然后 你希望 dropout 掩层在所有时间步都是一样的, 你可以使用 noise_shape=(batch_size, 1, features)。 seed: 一个作为随机种子的 Python 整数模型编译
通过 compile 方法完成:
1.优化器 optimizer。它可以是现有优化器的字符串标识符,如 rmsprop 或 adagrad,也可以是 Optimizer 类的实例。详见:optimizers。
2.损失函数 loss,模型试图最小化的目标函数。它可以是现有损失函数的字符串标识符,如 categorical_crossentropy 或 mse,也可以是一个目标函数。详见:losses。
3.评估标准 metrics。对于任何分类问题,你都希望将其设置为 metrics = [‘accuracy’]。评估标准可以是现有的标准的字符串标识符,也可以是自定义的评估标准函数。详见: metrics
通过fit方法完成
完整例子import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout
# 生成虚拟数据
x_train = np.random.random((1000, 20))
y_train = np.random.randint(2, size=(1000, 1))
x_test = np.random.random((100, 20))
y_test = np.random.randint(2, size=(100, 1))
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train,
epochs=20,
batch_size=128)
score = model.evaluate(x_test, y_test, batch_size=128)



