文章目录

  • 一、callbacks篇
    • 1、ReduceLROnPlateau 训练过程优化学习率
    • 2、EarlyStopping 早停操作
    • 3、ModelCheckpoint 用于设置保存的方式
    • 4、TensorBoard 训练可视化工具
    • 6、CSVLogger
  • 二、Model类(函数式API)
    • 1、fit_generator
    • 2、compile
    • 3、fit
    • 4、evaluate
    • 5、predict
    • 6、get_layer
  • 三、keras网络结构层 keras.layers
    • 1、Input
    • 2、Conv2D
    • 3、Conv2DTranspose
  • 参考

一、callbacks篇

  • keras官方文档
  • callbacks是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一个列表的回调函数(作为 callbacks 关键字参数)到 SequentialModel 类型的 .fit() 方法。在训练时,相应的回调函数的方法就会被在各自的阶段被调用。
  • Available metrics are: val_loss,val_acc,loss,acc,lr

1、ReduceLROnPlateau 训练过程优化学习率

  • 目的:定义学习率之后,经过一定epoch迭代之后,模型效果不再提升,该学习率可能已经不再适应该模型。需要在训练过程中缩小学习率,进而提升模型。如何在训练过程中缩小学习率呢?我们可以使用keras中的回调函数ReduceLROnPlateau。与EarlyStopping配合使用,会非常方便。
  • 参数:
monitor: 被监测的数据。
factor: 学习速率被降低的因数。新的学习速率 = 学习速率 * 因数
patience: 没有进步的训练轮数,在这之后训练速率会被降低。
verbose: 整数。0:安静,1:更新信息。
mode: {auto, min, max} 其中之一。如果是 min 模式,学习速率会被降低如果被监测的数据已经停止下降; 在 max 模式,学习塑料会被降低如果被监测的数据已经停止上升; 在 auto 模式,方向会被从被监测的数据中自动推断出来。
min_delta: 对于测量新的最优化的阀值,只关注巨大的改变。
cooldown: 在学习速率被降低之后,重新恢复正常操作之前等待的训练轮数量。
min_lr: 学习速率的下边界。Reduce=ReduceLROnPlateau(monitor='val_accuracy',factor=0.1,patience=2,verbose=1,mode='auto',epsilon=0.0001,cooldown=0,min_lr=0)
  • 代码示例
# 学习率下降的方式,val_loss三次不下降就下降学习率继续训练
reduce_lr = ReduceLROnPlateau(monitor='val_loss',factor=0.5,patience=3,verbose=1
)

2、EarlyStopping 早停操作

  • EarlyStopping是Callbacks的一种,callbacks用于指定在每个epoch开始和结束的时候进行哪种特定操作。Callbacks中有一些设置好的接口,可以直接使用,如’acc’, 'val_acc’, ’loss’ 和 ’val_loss’等等。
    EarlyStopping则是用于提前停止训练的callbacks。具体地,可以达到当训练集上的loss不在减小(即减小的程度小于某个阈值)的时候停止继续训练。

  • 早停法旨在解决epoch数量需要手动设置的问题。它也可以被视为一种能够避免网络发生过拟合的正则化方法(与L1/L2权重衰减和丢弃法类似)。

  • 参数

monitor: 被监测的数据。
min_delta: 在被监测的数据中被认为是提升的最小变化, 例如,小于 min_delta 的绝对变化会被认为没有提升。
patience: 没有进步的训练轮数,在这之后训练就会被停止。
verbose: 详细信息模式。
mode: {auto, min, max} 其中之一。 在 min 模式中, 当被监测的数据停止下降,训练就会停止;在 max 模式中,当被监测的数据停止上升,训练就会停止;在 auto 模式中,方向会自动从被监测的数据的名字中判断出来。
baseline: 要监控的数量的基准值。 如果模型没有显示基准的改善,训练将停止。
restore_best_weights: 是否从具有监测数量的最佳值的时期恢复模型权重。 如果为 False,则使用在训练的最后一步获得的模型权重。
  • 示例
# 是否需要早停,当val_loss一直不下降的时候意味着模型基本训练完毕,可以停止
early_stopping = EarlyStopping(monitor='val_loss',min_delta=0,patience=10,verbose=1
)

3、ModelCheckpoint 用于设置保存的方式

  • 参数
filename:字符串,保存模型的路径,filepath可以是格式化的字符串,里面的占位符将会被epoch值和传入on_epoch_end的logs关键字所填入。
例如:
filepath = “weights_{epoch:03d}-{val_loss:.4f}.h5”
则会生成对应epoch和验证集loss的多个文件。monitor:需要监视的值,通常为:val_acc 或 val_loss 或 acc 或 lossverbose:信息展示模式,01。为1表示输出epoch模型保存信息,默认为0表示不输出该信息,信息形如:
Epoch 00001: val_acc improved from -inf to 0.49240, saving model to /xxx/checkpoint/model_001-0.3902.h5save_best_only:当设置为True时,将只保存在验证集上性能最好的模型mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_acc时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)period:CheckPoint之间的间隔的epoch数
  • 示例
# 保存的方式,1世代保存一次
checkpoint_period = ModelCheckpoint(log_dir + 'ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5',monitor='val_loss',save_weights_only=True,save_best_only=True,period=1
)

4、TensorBoard 训练可视化工具

  • 参数
log_dir: 用来保存被 TensorBoard 分析的日志文件的文件名。
histogram_freq: 对于模型中各个层计算激活值和模型权重直方图的频率(训练轮数中)。 如果设置成 0 ,直方图不会被计算。对于直方图可视化的验证数据(或分离数据)一定要明确的指出。
write_graph: 是否在 TensorBoard 中可视化图像。 如果 write_graph 被设置为 True,日志文件会变得非常大。
write_grads: 是否在 TensorBoard 中可视化梯度值直方图。 histogram_freq 必须要大于 0 。
batch_size: 用以直方图计算的传入神经元网络输入批的大小。
write_images: 是否在 TensorBoard 中将模型权重以图片可视化。
embeddings_freq: 被选中的嵌入层会被保存的频率(在训练轮中)。
embeddings_layer_names: 一个列表,会被监测层的名字。 如果是 None 或空列表,那么所有的嵌入层都会被监测。
embeddings_metadata: 一个字典,对应层的名字到保存有这个嵌入层元数据文件的名字。 查看 详情 关于元数据的数据格式。 以防同样的元数据被用于所用的嵌入层,字符串可以被传入。
embeddings_data: 要嵌入在 embeddings_layer_names 指定的层的数据。 Numpy 数组(如果模型有单个输入)或 Numpy 数组列表(如果模型有多个输入)。 Learn ore about embeddings。
update_freq: 'batch''epoch' 或 整数。当使用 'batch' 时,在每个 batch 之后将损失和评估值写入到 TensorBoard 中。同样的情况应用到 'epoch' 中。如果使用整数,例如 10000,这个回调会在每 10000 个样本之后将损失和评估值写入到 TensorBoard 中。注意,频繁地写入到 TensorBoard 会减缓你的训练。
  • 示例
# 设置log的存储位置,将网络权值以图片格式保持在tensorboard中显示,设置每一个周期计算一次网络的
tb_cb = keras.callbacks.TensorBoard(log_dir='weights/' + args.exp_name + '/%s/log' % args.model_name, write_images=True,histogram_freq=0)

6、CSVLogger

  • 把训练轮结果数据流到 csv 文件的回调函数。

  • 支持所有可以被作为字符串表示的值,包括 1D 可迭代数据,例如,np.ndarray。

  • 参数

filename: csv 文件的文件名,例如 'run/log.csv'。
separator: 用来隔离 csv 文件中元素的字符串。
append: True:如果文件存在则增加(可以被用于继续训练)。False:覆盖存在的文件。
  • 示例
csv_logger = CSVLogger(log_file_path, append=False)

二、Model类(函数式API)

在函数式 API 中,给定一些输入张量和输出张量,可以通过以下方式实例化一个 Model:

from keras.models import Model
from keras.layers import Input, Densea = Input(shape=(32,))
b = Dense(32)(a)
model = Model(inputs=a, outputs=b)

这个模型将包含从 a 到 b 的计算的所有网络层。

在多输入或多输出模型的情况下,你也可以使用列表:

model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])

1、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 实例)逐批生成的数据,按批次训练模型。
  • 生成器与模型并行运行,以提高效率。 例如,这可以让你在 CPU 上对图像进行实时数据增强,以在 GPU 上训练模型。
  • keras.utils.Sequence 的使用可以保证数据的顺序, 以及当 use_multiprocessing=True 时 ,保证每个输入在每个 epoch 只使用一次。
  • 参数
generator: 一个生成器,或者一个 Sequence (keras.utils.Sequence) 对象的实例, 以在使用多进程时避免数据的重复。 生成器的输出应该为以下之一:一个 (inputs, targets) 元组
一个 (inputs, targets, sample_weights) 元组。
这个元组(生成器的单个输出)组成了单个的 batch。 因此,这个元组中的所有数组长度必须相同(与这一个 batch 的大小相等)。 不同的 batch 可能大小不同。 例如,一个 epoch 的最后一个 batch 往往比其他 batch 要小, 如果数据集的尺寸不能被 batch size 整除。 生成器将无限地在数据集上循环。当运行到第 steps_per_epoch 时,记一个 epoch 结束。steps_per_epoch: 在声明一个 epoch 完成并开始下一个 epoch 之前从 generator 产生的总步数(批次样本)。 它通常应该等于你的数据集的样本数量除以批量大小。 对于 Sequence,它是可选的:如果未指定,将使用len(generator) 作为步数。epochs: 整数。训练模型的迭代总轮数。一个 epoch 是对所提供的整个数据的一轮迭代,如 steps_per_epoch 所定义。注意,与 initial_epoch 一起使用,epoch 应被理解为「最后一轮」。模型没有经历由 epochs 给出的多次迭代的训练,而仅仅是直到达到索引 epoch 的轮次。
verbose: 0, 12。日志显示模式。 0 = 安静模式, 1 = 进度条, 2 = 每轮一行。
callbacks: keras.callbacks.Callback 实例的列表。在训练时调用的一系列回调函数。
validation_data: 它可以是以下之一:验证数据的生成器或 Sequence 实例
一个 (inputs, targets) 元组
一个 (inputs, targets, sample_weights) 元组。
在每个 epoch 结束时评估损失和任何模型指标。该模型不会对此数据进行训练。validation_steps: 仅当 validation_data 是一个生成器时才可用。 在停止前 generator 生成的总步数(样本批数)。 对于 Sequence,它是可选的:如果未指定,将使用 len(generator) 作为步数。class_weight: 可选的将类索引(整数)映射到权重(浮点)值的字典,用于加权损失函数(仅在训练期间)。 这可以用来告诉模型「更多地关注」来自代表性不足的类的样本。
max_queue_size: 整数。生成器队列的最大尺寸。 如未指定,max_queue_size 将默认为 10。
workers: 整数。使用的最大进程数量,如果使用基于进程的多线程。 如未指定,workers 将默认为 1。如果为 0,将在主线程上执行生成器。
use_multiprocessing: 布尔值。如果 True,则使用基于进程的多线程。 如未指定, use_multiprocessing 将默认为 False。 请注意,由于此实现依赖于多进程,所以不应将不可传递的参数传递给生成器,因为它们不能被轻易地传递给子进程。
shuffle: 是否在每轮迭代之前打乱 batch 的顺序。 只能与 Sequence (keras.utils.Sequence) 实例同用。
initial_epoch: 开始训练的轮次(有助于恢复之前的训练)。

2、compile

compile(optimizer,loss=None,metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)

参数

optimizer: 字符串(优化器名)或者优化器实例。 详见 optimizers。
loss: 字符串(目标函数名)或目标函数。 详见 losses。 如果模型具有多个输出,则可以通过传递损失函数的字典或列表,在每个输出上使用不同的损失。 模型将最小化的损失值将是所有单个损失的总和。
metrics: 在训练和测试期间的模型评估标准。 通常你会使用 metrics = ['accuracy']。 要为多输出模型的不同输出指定不同的评估标准, 还可以传递一个字典,如 metrics = {'output_a''accuracy'}。
loss_weights: 可选的指定标量系数(Python 浮点数)的列表或字典, 用以衡量损失函数对不同的模型输出的贡献。 模型将最小化的误差值是由 loss_weights 系数加权的加权总和误差。 如果是列表,那么它应该是与模型输出相对应的 1:1 映射。 如果是张量,那么应该把输出的名称(字符串)映到标量系数。
sample_weight_mode: 如果你需要执行按时间步采样权重(2D 权重),请将其设置为 temporal。 默认为 None,为采样权重(1D)。 如果模型有多个输出,则可以通过传递 mode 的字典或列表,以在每个输出上使用不同的 sample_weight_mode。
weighted_metrics: 在训练和测试期间,由 sample_weight 或 class_weight 评估和加权的度量标准列表。
target_tensors: 默认情况下,Keras 将为模型的目标创建一个占位符,在训练过程中将使用目标数据。 相反,如果你想使用自己的目标张量(反过来说,Keras 在训练期间不会载入这些目标张量的外部 Numpy 数据), 您可以通过 target_tensors 参数指定它们。 它可以是单个张量(单输出模型),张量列表,或一个映射输出名称到目标张量的字典。
**kwargs: 当使用 Theano/CNTK 后端时,这些参数被传入 K.function。 当使用 TensorFlow 后端时,这些参数被传递到 tf.Session.run。

异常

  • ValueError: 如果 optimizer, loss, metrics 或 sample_weight_mode 这些参数不合法。

3、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)
以给定数量的轮次(数据集上的迭代)训练模型。
  • 参数
x: 训练数据的 Numpy 数组(如果模型只有一个输入), 或者是 Numpy 数组的列表(如果模型有多个输入)。 如果模型中的输入层被命名,你也可以传递一个字典,将输入层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,x 可以是 None(默认)。
y: 目标(标签)数据的 Numpy 数组(如果模型只有一个输出), 或者是 Numpy 数组的列表(如果模型有多个输出)。 如果模型中的输出层被命名,你也可以传递一个字典,将输出层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,y 可以是 None(默认)。
batch_size: 整数或 None。每次梯度更新的样本数。如果未指定,默认为 32。
epochs: 整数。训练模型迭代轮次。一个轮次是在整个 x 和 y 上的一轮迭代。 请注意,与 initial_epoch 一起,epochs 被理解为 「最终轮次」。模型并不是训练了 epochs 轮,而是到第 epochs 轮停止训练。
verbose: 0, 12。日志显示模式。 0 = 安静模式, 1 = 进度条, 2 = 每轮一行。
callbacks: 一系列的 keras.callbacks.Callback 实例。一系列可以在训练时使用的回调函数。 详见 callbacks。
validation_split: 01 之间的浮点数。用作验证集的训练数据的比例。 模型将分出一部分不会被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。 验证数据是混洗之前 x 和y 数据的最后一部分样本中。
validation_data: 元组 (x_val,y_val) 或元组 (x_val,y_val,val_sample_weights), 用来评估损失,以及在每轮结束时的任何模型度量指标。 模型将不会在这个数据上进行训练。这个参数会覆盖 validation_split。
shuffle: 布尔值(是否在每轮迭代之前混洗数据)或者 字符串 (batch)。 batch 是处理 HDF5 数据限制的特殊选项,它对一个 batch 内部的数据进行混洗。 当 steps_per_epoch 非 None 时,这个参数无效。
class_weight: 可选的字典,用来映射类索引(整数)到权重(浮点)值,用于加权损失函数(仅在训练期间)。 这可能有助于告诉模型 「更多关注」来自代表性不足的类的样本。
sample_weight: 训练样本的可选 Numpy 权重数组,用于对损失函数进行加权(仅在训练期间)。 您可以传递与输入样本长度相同的平坦(1D)Numpy 数组(权重和样本之间的 1:1 映射), 或者在时序数据的情况下,可以传递尺寸为 (samples, sequence_length)2D 数组,以对每个样本的每个时间步施加不同的权重。 在这种情况下,你应该确保在 compile() 中指定 sample_weight_mode="temporal"。
initial_epoch: 整数。开始训练的轮次(有助于恢复之前的训练)。
steps_per_epoch: 整数或 None。 在声明一个轮次完成并开始下一个轮次之前的总步数(样品批次)。 使用 TensorFlow 数据张量等输入张量进行训练时,默认值 None 等于数据集中样本的数量除以 batch 的大小,如果无法确定,则为 1。
validation_steps: 只有在指定了 steps_per_epoch 时才有用。停止前要验证的总步数(批次样本)。
  • 返回

      一个 History 对象。其 History.history 属性是连续 epoch 训练损失和评估值,以及验证集损失和评估值的记录(如果适用)。
    
  • 异常

      RuntimeError: 如果模型从未编译。ValueError: 在提供的输入数据与模型期望的不匹配的情况下。
    

4、evaluate

evaluate(x=None, y=None, batch_size=None, verbose=1, sample_weight=None, steps=None)
 在测试模式下返回模型的误差值和评估标准值。计算是分批进行的。
  • 参数
x: 测试数据的 Numpy 数组(如果模型只有一个输入), 或者是 Numpy 数组的列表(如果模型有多个输入)。 如果模型中的输入层被命名,你也可以传递一个字典,将输入层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,x 可以是 None(默认)。
y: 目标(标签)数据的 Numpy 数组,或 Numpy 数组的列表(如果模型具有多个输出)。 如果模型中的输出层被命名,你也可以传递一个字典,将输出层名称映射到 Numpy 数组。 如果从本地框架张量馈送(例如 TensorFlow 数据张量)数据,y 可以是 None(默认)。
batch_size: 整数或 None。每次评估的样本数。如果未指定,默认为 32。
verbose: 01。日志显示模式。 0 = 安静模式,1 = 进度条。
sample_weight: 测试样本的可选 Numpy 权重数组,用于对损失函数进行加权。 您可以传递与输入样本长度相同的扁平(1D)Numpy 数组(权重和样本之间的 1:1 映射), 或者在时序数据的情况下,传递尺寸为 (samples, sequence_length)2D 数组,以对每个样本的每个时间步施加不同的权重。 在这种情况下,你应该确保在 compile() 中指定 sample_weight_mode="temporal"。
steps: 整数或 None。 声明评估结束之前的总步数(批次样本)。默认值 None
  • 返回

      标量测试误差(如果模型只有一个输出且没有评估标准) 或标量列表(如果模型具有多个输出 和/或 评估指标)。 属性 model.metrics_names 将提供标量输出的显示标签。
    

5、predict

predict(x, batch_size=None, verbose=0, steps=None)
 为输入样本生成输出预测。计算是分批进行的
  • 参数
x: 输入数据,Numpy 数组 (或者 Numpy 数组的列表,如果模型有多个输出)。
batch_size: 整数。如未指定,默认为 32。
verbose: 日志显示模式,01。
steps: 声明预测结束之前的总步数(批次样本)。默认值 None
  • 返回

      预测的 Numpy 数组(或数组列表)。
    
  • 异常

      ValueError: 在提供的输入数据与模型期望的不匹配的情况下, 或者在有状态的模型接收到的样本不是 batch size 的倍数的情况下。
    

6、get_layer

get_layer(self, name=None, index=None)
 根据名称(唯一)或索引值查找网络层。如果同时提供了 name 和 index,则 index 将优先。索引值来自于水平图遍历的顺序(自下而上)。
  • 参数
name: 字符串,层的名字。
index: 整数,层的索引。
  • 返回

      一个层实例。
    
  • 异常

      ValueError: 如果层的名称或索引不正确。
    

三、keras网络结构层 keras.layers

1、Input

keras.layers.Input()
或
keras.engine.input_layer.Input()
  • Input() 用于实例化 Keras 张量。

  • Keras 张量是底层后端(Theano, TensorFlow 或 CNTK) 的张量对象,我们增加了一些特性,使得能够通过了解模型的输入 和输出来构建 Keras 模型。

  • 例如,如果 a, b 和 c 都是 Keras 张量, 那么以下操作是可行的: model = Model(input=[a, b], output=c)

  • 添加的 Keras 属性是: - _keras_shape: 通过 Keras端的尺寸推理 进行传播的整数尺寸元组。 - _keras_history: 应用于张量的最后一层。 整个网络层计算图可以递归地从该层中检索。

参数

shape: 一个尺寸元组(整数),不包含批量大小。 例如,shape=(32,) 表明期望的输入是按批次的 32 维向量。
batch_shape: 一个尺寸元组(整数),包含批量大小。 例如,batch_shape=(10, 32) 表明期望的输入是 1032 维向量。 batch_shape=(None, 32) 表明任意批次大小的 32 维向量。
name: 一个可选的层的名称的字符串。 在一个模型中应该是唯一的(不可以重用一个名字两次)。 如未提供,将自动生成。
dtype: 输入所期望的数据类型,字符串表示 (float32, float64, int32...)
sparse: 一个布尔值,指明需要创建的占位符是否是稀疏的。
tensor: 可选的可封装到 Input 层的现有张量。 如果设定了,那么这个层将不会创建占位符张量。

返回

  • 一个张量。

例:

# 这是 Keras 中的一个逻辑回归
x = Input(shape=(32,))
y = Dense(16, activation='softmax')(x)
model = Model(x, y)
img_input = Input(shape=(input_height, input_width, 3))

2、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” 时。

  • 参数
filters: 整数,输出空间的维度 (即卷积中滤波器的输出数量)。
kernel_size: 一个整数,或者 2 个整数表示的元组或列表, 指明 2D 卷积窗口的宽度和高度。 可以是一个整数,为所有空间维度指定相同的值。
strides: 一个整数,或者 2 个整数表示的元组或列表, 指明卷积沿宽度和高度方向的步长。 可以是一个整数,为所有空间维度指定相同的值。 指定任何 stride 值 != 1 与指定 dilation_rate 值 != 1 两者不兼容。
padding: "valid""same" (大小写敏感)。
data_format: 字符串, channels_last (默认) 或 channels_first 之一,表示输入中维度的顺序。channels_last 对应输入尺寸为 (batch, height, width, channels), channels_first 对应输入尺寸      为 (batch, channels, height, width)。 它默认为从 Keras 配置文件 ~/.keras/keras.json 中找到的 image_data_format 值。 如果你从未设置它,将使用 channels_last。
dilation_rate: 一个整数或 2 个整数的元组或列表, 指定膨胀卷积的膨胀率。 可以是一个整数,为所有空间维度指定相同的值。 当前,指定任何 dilation_rate 值 != 1 与 指定 stride 值 != 1 两者不兼容。
activation: 要使用的激活函数 (详见 activations)。 如果你不指定,则不使用激活函数 (即线性激活: a(x) = x)。
use_bias: 布尔值,该层是否使用偏置向量。
kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
bias_initializer: 偏置向量的初始化器 (详见 initializers)。
kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
bias_regularizer: 运用到偏置向量的正则化函数 (详见 regularizer)。
activity_regularizer: 运用到层输出(它的激活值)的正则化函数 (详见 regularizer)。
kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)

输入尺寸

如果 data_format='channels_first', 输入 4D 张量,尺寸为 (samples, channels, rows, cols)。
如果 data_format='channels_last', 输入 4D 张量,尺寸为 (samples, rows, cols, channels)。

输出尺寸

如果 data_format='channels_first', 输出 4D 张量,尺寸为 (samples, filters, new_rows, new_cols)。
如果 data_format='channels_last', 输出 4D 张量,尺寸为 (samples, new_rows, new_cols, filters)。

由于填充的原因, rows 和 cols 值可能已更改。

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

转置卷积层 (有时被成为反卷积)。

对转置卷积的需求一般来自希望使用 与正常卷积相反方向的变换, 即,将具有卷积输出尺寸的东西 转换为具有卷积输入尺寸的东西, 同时保持与所述卷积相容的连通性模式。

当使用该层作为模型第一层时,需要提供 input_shape 参数 (整数元组,不包含样本表示的轴),例如, input_shape=(128, 128, 3) 表示 128x128 RGB 图像, 在 data_format=“channels_last” 时。

  • 参数
filters: 整数,输出空间的维度 (即卷积中滤波器的输出数量)。
kernel_size: 一个整数,或者 2 个整数表示的元组或列表, 指明 2D 卷积窗口的高度和宽度。 可以是一个整数,为所有空间维度指定相同的值。
strides: 一个整数,或者 2 个整数表示的元组或列表, 指明卷积沿高度和宽度方向的步长。 可以是一个整数,为所有空间维度指定相同的值。 指定任何 stride 值 != 1 与指定 dilation_rate 值 != 1 两者不兼容。
padding: "valid""same" (大小写敏感)。
output_padding: 一个整数,或者 2 个整数表示的元组或列表, 指定沿输出张量的高度和宽度的填充量。 可以是单个整数,以指定所有空间维度的相同值。 沿给定维度的输出填充量必须低于沿同一维度的步长。 如果设置为 None (默认), 输出尺寸将自动推理出来。
data_format: 字符串, channels_last (默认) 或 channels_first 之一,表示输入中维度的顺序。 channels_last 对应输入尺寸为 (batch, height, width, channels), channels_first 对应输入尺寸为 (batch, channels, height, width)。 它默认为从 Keras 配置文件 ~/.keras/keras.json 中 找到的 image_data_format 值。 如果你从未设置它,将使用 "channels_last"。
dilation_rate: 一个整数或 2 个整数的元组或列表, 指定膨胀卷积的膨胀率。 可以是一个整数,为所有空间维度指定相同的值。 当前,指定任何 dilation_rate 值 != 1 与 指定 stride 值 != 1 两者不兼容。
activation: 要使用的激活函数 (详见 activations)。 如果你不指定,则不使用激活函数 (即线性激活: a(x) = x)。
use_bias: 布尔值,该层是否使用偏置向量。
kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
bias_initializer: 偏置向量的初始化器 (详见 initializers)。
kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
bias_regularizer: 运用到偏置向量的正则化函数 (详见 regularizer)。
activity_regularizer: 运用到层输出(它的激活值)的正则化函数 (详见 regularizer)。
kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)

输入尺寸

如果 data_format='channels_first', 输入 4D 张量,尺寸为 (batch, channels, rows, cols)。
如果 data_format='channels_last', 输入 4D 张量,尺寸为 (batch, rows, cols, channels)。
输出尺寸如果 data_format='channels_first', 输出 4D 张量,尺寸为 (batch, filters, new_rows, new_cols)。
如果 data_format='channels_last', 输出 4D 张量,尺寸为 (batch, new_rows, new_cols, filters)。
由于填充的原因, rows 和 cols 值可能已更改。

如果指定了 output_padding:

new_rows = ((rows - 1) * strides[0] + kernel_size[0]- 2 * padding[0] + output_padding[0])
new_cols = ((cols - 1) * strides[1] + kernel_size[1]- 2 * padding[1] + output_padding[1])

例:

o = Conv2DTranspose(filters=nClasses, kernel_size=(2, 2), strides=(2, 2), padding="valid", activation=None,name="score2")(o)

参考

  • Keras的回调函数ReduceLROnPlateau 训练过程优化学习率
  • [深度学习] keras的EarlyStopping使用与技巧

【keras】keras教程(参考官方文档)相关推荐

  1. Elasticsearch8.4.3安装最新ik分词器elasticsearch-analysis-ik【v8.4.3版本】(参考官方文档)

    一.前言   ik分词器官方源码版下载地址:   https://github.com/medcl/elasticsearch-analysis-ik     ik分词器官方发行版下载地址:   ht ...

  2. 阿里云OSS | 对象存储服务快速入门 | 参考官方文档实现使用JavaSDK上传文件 | 本地上传与web上传案例

    参考文档 : 点击查看 文章目录 运行环境 一.OSS相关概念 1.1 Storage Class 存储类型 1.2 Bucket 存储空间 1.3 Object 对象 1.4 Region 地域 1 ...

  3. 最新Elasticsearch8.4.3 + Kibana8.4.3在云服务器Centos7.9安装部署(参考官方文档)

    一.前言   最近笔者学习Elasticsearch,官方最新稳定版为 Elasticsearch-8.4.3,想在云服务器上Centos7.9搭建.搭建之路坑多路少啊(指网上的博文教程五花八门,基本 ...

  4. 基于vue的微信小程序开发5分钟上手教程(官方文档转)

    使用手册 mpvue 继承自 Vue.js,其技术规范和语法特点与 Vue.js 保持一致. 注:其实就是官方文档,只是习惯看博文学习才直接copy过来的,详见官方文档 本文档适用于有一定 Vue.j ...

  5. Centos 7.6 服务器安装oracle 11gR2(参考官方文档)

    Centos 7.6 服务器安装oracle 11gR2 说来气人,项目需要所以得在服务器上安装Oracle. 像往常一样,打开浏览器 -> 搜索 - > 找博客 -> 安装. 但是 ...

  6. Sass快速入门笔记(将主要知识点截取出来,参考官方文档和一些网络教学视频)

    文章目录 一.安装Sass(全部参考Sass官方文档) 1.windows需先安装`RuBy`,`Mac`系统自带`RuBy`无需安装 2.Sass安装 二.编译css文件 1.单个文件编译(命令行) ...

  7. Docker基础镜像操作系统基础镜像对比(参考官方文档),优化docker镜像

    目录: 一. 选择Docker基础镜像 操作系统基础镜像 1. busybox 2. Alpine 3. CentOS 4. Ubuntu 5. Debian 二.编程语言基础镜像 应用基础镜像 其它 ...

  8. [WebApp开发]基础教程-Google官方文档-第四篇

    文档内容 在Android Browser中使用控制台API 在WebView中使用控制台API 参考 调试 如果你是在为Android开发web应用,那么,你可以使用控制台(console)的Jav ...

  9. Zabbix部署(参考官方文档)

    此次我们采用部署包安装方式:安装zabbix(server端) 1.安装源码库配置部署包(这个部署包包含了yum配置文件) rpm -ivh http://repo.zabbix.com/zabbix ...

最新文章

  1. 一文看懂循环神经网络-RNN(独特价值+优化算法+实际应用)
  2. msf 启动报[-] * WARNING: No database support: No database YAML file解决方法
  3. 20172318 2016-2017-2 《Java程序设计》第一周学习总结
  4. 用户操作计算机系统的基本工具是什么,在Windows支持下,用户操作计算机系统的基本工具是______。...
  5. 一道简单的编程题考核你的编程功底
  6. 沟通CTBS助六和集团实现财务集中管理
  7. 关系型数据的分布式处理系统:Cobar
  8. select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
  9. 通证指数:ChaiNext系列指数基金上线
  10. cacti mysql 压缩 备份_CactiEZ备份和恢复
  11. 计算机教案.doc免费,TOP16[定稿]计算机基础教案33412.doc文档免费在线阅读
  12. 【百度编辑器】修改上传图片缩略图大小
  13. 全网最全的私网多种穿透互联技术解析
  14. windy数(数位dp)
  15. Ubuntu进入睡眠模式
  16. mysql COMMENT字段注释,表注释使用(转)
  17. 逆向中常见寄存器及常用汇编指令
  18. 【历史上的今天】6 月 14 日:理论计算机科学的奠基人出生;VisiCalc 电子表格的发明者出生;雅虎收购 Overture
  19. 小散量化炒股记|趋势指标金叉死叉策略在震荡行情中怎么处理
  20. 火山PC搭建本地远程服务器1

热门文章

  1. 那个学php的上吊了,一路名校的中国博士,在美国上吊自杀了
  2. 微信号,公众平台账号,开放平台账号的区别
  3. 新书问答:Software Wasteland
  4. 转炉炼钢计算机仿真实验报告,转炉侧吹熔炼水模型计算机仿真实验-计算机仿真论文-计算机论文(8页)-原创力文档...
  5. NSN 内部推荐 -- 不能从电子邮件地址认证身份和来源.
  6. 【Python】函数相关
  7. JDK的一个Bug,监听文件变更要小心了
  8. 【STC15】定时器2模式0作为波特率发生器示例程序
  9. 腾讯公关总监张军“青年睡觉言论”大翻车,惨遭网友“群攻”
  10. 成功应聘Intel的真实经历