本文是基于KERAS官方中文文档写的
仅为方便查询,详细信息还是推荐看官方文档。
模型
关于KERAS模型
方法或属性 | 完整 | 功能 |
---|---|---|
model.layers | 包含模型网络层的展平列表 | |
model.inputs | 模型输入张量的列表 | |
model.outputs | 模型输出张量的列表 | |
model.summary() | 打印出模型概述信息。 它是 utils.print_summary 的简捷调用 | |
model.get_config() | 返回包含模型配置信息的字典 | |
model.get_weights() | 返回模型中所有权重张量的列表,类型为 Numpy 数组 | |
model.set_weights(weights) | 从 Numpy 数组中为模型设置权重。列表中的数组必须与 get_weights() 返回的权重具有相同的尺寸 | |
model.to_json() | 以 JSON 字符串的形式返回模型的表示。请注意,该表示不包括权重,仅包含结构 | |
model.to_ymal() | 以 YAML 字符串的形式返回模型的表示。请注意,该表示不包括权重,只包含结构 | |
model.save_weights(filepath) | 将模型权重存储为 HDF5 文件 | |
model.load_weights(filepath, by_name=False) | 从 HDF5 文件(由 save_weights 创建)中加载权重。默认情况下,模型的结构应该是不变的。 如果想将权重载入不同的模型(部分层相同), 设置 by_name=True 来载入那些名字相同的层的权重 |
Sequential 模型 API
函数或属性 | 完整 | 功能 |
---|---|---|
**model.compile() | compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None) | 用于配置训练模型 |
model.fit() | fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None) | 以固定数量的轮次(数据集上的迭代)训练模型 |
model.evaluate() | evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None) | 在测试模式,返回误差值和评估标准值,计算逐批次进行 |
model.predict() | predict(x, batch_size=None, verbose=0, steps=None) | 为输入样本生成输出预测。计算逐批次进行 |
model.train_on_batch() | train_on_batch(x, y, sample_weight=None, class_weight=None) | 当数据集太大时使用,一批样品的单次梯度更新 |
model.test_on_batch() | test_on_batch(x, y, sample_weight=None) | 在一批样本上评估模型 |
model.predict_on_batch() | predict_on_batch(x) | 返回一批样本的模型预测值 |
model.fit_generator() | fit_generator(generator, steps_per_epoch=None, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_queue_size=10, workers=1, use_multiprocessing=False, shuffle=True, initial_epoch=0) | 使用 Python 生成器或 Sequence 实例逐批生成的数据,按批次训练模型 |
model.evaluate_generator() | evaluate_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0) | 在数据生成器上评估模型。这个生成器应该返回与 test_on_batch 所接收的同样的数据 |
model.predict_generator() | predict_generator(generator, steps=None, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0) | 为来自数据生成器的输入样本生成预测。这个生成器应该返回与 predict_on_batch 所接收的同样的数据 |
model.get_layer() | get_layer(name=None, index=None) | 根据名称(唯一)或索引值查找网络层。如果同时提供了 name 和 index,则 index 将优先。根据网络层的名称(唯一)或其索引返回该层。索引是基于水平图遍历的顺序(自下而上) |
关于Keras网络层
函数或属性 | 完整 | 功能 |
---|---|---|
layer.get_weights() | 以含有Numpy矩阵的列表形式返回层的权重 | |
layer.set_weights(weights) | 从含有Numpy矩阵的列表中设置层的权重(与get_weights的输出形状相同) | |
layer.get_config() | 返回包含层配置的字典 | |
layer.input() | 得到输入张量 | |
layer.output | 得到输出张量 | |
layer.input_shape | 得到输入张量的shape | |
layer.output_shape | 得到输出张量的shape | |
layer.get_input_at(node_index) | 层有多个节点,得到输入张量 | |
layer.get_output_at(node_index) | 层有多个节点,得到输出张量 | |
layer.get_input_shape_at(node_index) | 层有多个节点,得到输入张量的shape | |
layer.get_output_shape_at(nodex_index) | 层有多个节点,得到输出张量的shape |
核心网络层
函数或属性 | 完整 | 功能 |
---|---|---|
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) | 全连接层 |
Activation() | keras.layers.Activation(activation) | 激活函数 |
Dropout() | keras.layers.Dropout(rate, noise_shape=None, seed=None) | Dropout 包括在训练中每次更新时, 将输入单元的按比率随机设置为 0, 这有助于防止过拟合 |
Flatten() | keras.layers.Flatten(data_format=None) | 将输入展平。不影响批量大小 |
Input | keras.engine.input_layer.Input() | 用于实例化 Keras 张量 |
Reshape() | keras.layers.Reshape(target_shape) | 将输入重新调整为特定的尺寸 |
Permute() | keras.layers.Permute(dims) | 根据给定的模式置换输入的维度。在某些场景下很有用,例如将 RNN 和 CNN 连接在一起 |
RepeatVector() | keras.layers.RepeatVector(n) | 将输入重复 n 次 |
Lambda() | keras.layers.Lambda(function, output_shape=None, mask=None, arguments=None) | 将任意表达式封装为 Layer 对象 |
ActivityRegularization() | keras.layers.ActivityRegularization(l1=0.0, l2=0.0) | 网络层,对基于代价函数的输入活动应用一个更新 |
Masking() | keras.layers.Masking(mask_value=0.0) | 使用覆盖值覆盖序列,以跳过时间步 |
SpatialDropout1D() | keras.layers.SpatialDropout1D(rate) | Dropout 的 Spatial 1D 版本此版本的功能与 Dropout 相同,但它会丢弃整个 1D 的特征图而不是丢弃单个元素 |
SpatialDropout2D() | keras.layers.SpatialDropout2D(rate, data_format=None) | Dropout 的 Spatial 2D 版本此版本的功能与 Dropout 相同,但它会丢弃整个 2D 的特征图而不是丢弃单个元素 |
SpatialDropout3D() | keras.layers.SpatialDropout3D(rate, data_format=None) | Dropout 的 Spatial 3D 版本此版本的功能与 Dropout 相同,但它会丢弃整个 3D 的特征图而不是丢弃单个元素 |
卷积层
函数或属性 | 完整 | 功能 |
---|---|---|
Conv1D | keras.layers.Conv1D(filters, kernel_size, strides=1, padding=‘valid’, data_format=‘channels_last’, dilation_rate=1, 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) | 1D 卷积层 (例如时序卷积)。该层创建了一个卷积核,该卷积核以 单个空间(或时间)维上的层输入进行卷积, 以生成输出张量。 如果 use_bias 为 True, 则会创建一个偏置向量并将其添加到输出中。 最后,如果 activation 不是 None,它也会应用于输出。当使用该层作为模型第一层时,需要提供 input_shape 参数(整数元组或 None),例如, (10, 128) 表示 10 个 128 维的向量组成的向量序列, (None, 128) 表示 128 维的向量组成的变长序列 |
Conv2D | keras.layers.Conv2D(filters, kernel_size, strides=(1, 1), padding=‘valid’, data_format=None, dilation_rate=(1, 1), 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) | 2D 卷积层 (例如对图像的空间卷积)。该层创建了一个卷积核, 该卷积核对层输入进行卷积, 以生成输出张量。 如果 use_bias 为 True, 则会创建一个偏置向量并将其添加到输出中。 最后,如果 activation 不是 None,它也会应用于输出。当使用该层作为模型第一层时,需要提供 input_shape 参数 (整数元组,不包含样本表示的轴),例如, input_shape=(128, 128, 3) 表示 128x128 RGB 图像, 在 data_format=“channels_last” 时。 |
SeparableConv1D | keras.layers.SeparableConv1D(filters, kernel_size, strides=1, padding=‘valid’, data_format=‘channels_last’, dilation_rate=1, depth_multiplier=1, activation=None, use_bias=True, depthwise_initializer=‘glorot_uniform’, pointwise_initializer=‘glorot_uniform’, bias_initializer=‘zeros’, depthwise_regularizer=None, pointwise_regularizer=None, bias_regularizer=None, activity_regularizer=None, depthwise_constraint=None, pointwise_constraint=None, bias_constraint=None) | 深度方向的可分离 1D 卷积。可分离的卷积的操作包括,首先执行深度方向的空间卷积 (分别作用于每个输入通道),紧接一个将所得输出通道 混合在一起的逐点卷积。depth_multiplier 参数控 制深度步骤中每个输入通道生成多少个输出通道。直观地说,可分离的卷积可以理解为一种将卷积核分解成 两个较小的卷积核的方法,或者作为 Inception 块的 一个极端版本。 |
SeparableConv2D | keras.layers.SeparableConv2D(filters, kernel_size, strides=(1, 1), padding=‘valid’, data_format=None, dilation_rate=(1, 1), depth_multiplier=1, activation=None, use_bias=True, depthwise_initializer=‘glorot_uniform’, pointwise_initializer=‘glorot_uniform’, bias_initializer=‘zeros’, depthwise_regularizer=None, pointwise_regularizer=None, bias_regularizer=None, activity_regularizer=None, depthwise_constraint=None, pointwise_constraint=None, bias_constraint=None) | 深度方向的可分离 2D 卷积。可分离的卷积的操作包括,首先执行深度方向的空间卷积 (分别作用于每个输入通道),紧接一个将所得输出通道 混合在一起的逐点卷积。depth_multiplier 参数控 制深度步骤中每个输入通道生成多少个输出通道。直观地说,可分离的卷积可以理解为一种将卷积核分解成 两个较小的卷积核的方法,或者作为 Inception 块的 一个极端版本。 |
DepthwiseConv2D | keras.layers.DepthwiseConv2D(kernel_size, strides=(1, 1), padding=‘valid’, depth_multiplier=1, data_format=None, activation=None, use_bias=True, depthwise_initializer=‘glorot_uniform’, bias_initializer=‘zeros’, depthwise_regularizer=None, bias_regularizer=None, activity_regularizer=None, depthwise_constraint=None, bias_constraint=None) | 深度可分离 2D 卷积。深度可分离卷积包括仅执行深度空间卷积中的第一步(其分别作用于每个输入通道)。 depth_multiplier 参数控制深度步骤中每个输入通道生成多少个输出通道。 |
Conv2DTranspose | keras.layers.Conv2DTranspose(filters, kernel_size, strides=(1, 1), padding=‘valid’, output_padding=None, data_format=None, dilation_rate=(1, 1), 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) | 转置卷积层 |
Conv3D | keras.layers.Conv3D(filters, kernel_size, strides=(1, 1, 1), padding=‘valid’, data_format=None, dilation_rate=(1, 1, 1), 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) | 3D卷积层 |
其余还有很多,不再一一列举。
池化层
函数或属性 | 完整 | 功能 |
---|---|---|
MaxPooling2D | keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding=‘valid’, data_format=None) | 对于空间数据的最大池化 |
同样,其他还有平均值池化,一维等多种,最常用的还是2维的最大值池化。