Keras中文文档知识点整理

今天复习了一下keras文档,把一些知识点整理一下,备忘。

1Keras是什么?

Keras是一个高层神经网络API,Keras由纯Python编写而成并基TensorflowTheano以及CNTK后端。(CNTK是后来增加的,微软的深度学习工具包,据说速度挺快,以后可以试试)

2 Keras的特点:

  • 简易和快速的原型设计(keras具有高度模块化,极简,和可扩充特性)

  • 支持CNNRNN,或二者的结合

  • 无缝CPUGPU切换

3 Keras的核心数据结构是“模型”,模型是一种组织网络层的方式。Keras中主要的模型是Sequential模型,Sequential是一系列网络层按顺序构成的栈。

4 Tensor张量:可以看作是向量、矩阵的自然推广,我们用张量来表示广泛的数据类型。

5 Theano,“channels_first”,即通道维靠前,例如:(100,3,16,32)

 TensorFlow,“channels_last”,即通道维靠后,例如:(100,16,32,3)

6batch,深度学习的优化算法,说白了就是梯度下降,每batch个样本数据更新一次参数。

7keras如果使用TensorFlow作为后端,当机器上有可用的GPU时,代码会自动调用GPU进行并行计算。如果使用Theano作为后端,需要设置一下(2种方法)。

8“冻结”一个层指的是该层将不参加网络训练,即该层的权重永不会更新。在进行fine-tune时我们经常会需要这项操作。在使用固定的embedding层处理文本输入时,也需要这个技术。可以通过向层的构造函数传递trainable参数来指定一个层是不是可训练的。

9 序贯模型是多个网络层的线性堆叠。Sequential的第一层需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数.

10 函数式模型称作Functional,但它的类名是Model。Keras函数式模型接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径。

11 常用层:对应于core模块,core内部定义了一系列常用的网络层,包括全连接、激活层等。

  • Dense层即全连接层
keras.layers.core.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)

input:形如(nb_samples, ..., input_shape[1])的nD张量,最常见的情况为(nb_samples, input_dim)的2D张量

output:形如(nb_samples, ..., units)的nD张量,最常见的情况为(nb_samples, output_dim)的2D张量

  • Activation层,对一个层的输出施加激活函数

    keras.layers.core.Activation(activation)

  • Dropout层,将在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,Dropout层用于防止过拟合。
    keras.layers.core.Dropout(rate, noise_shape=None, seed=None)
  • Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。
    keras.layers.core.Flatten()

  • Reshape层用来将输入shape转换为特定的shape
    keras.layers.core.Reshape(target_shape)

  • Conv2D层,对图像的空域卷积

keras.layers.convolutional.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)

input: ‘channels_last’模式下,输入形如(samples,rows,cols,channels)的4D张量

output: ‘channels_last’模式下,为形如(samples,new_rows, new_cols,nb_filter)的4D张量

  • 循环层:LSTM长短期记忆模型
keras.layers.recurrent.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias=True, kernel_initializer='glorot_uniform', recurrent_initializer='orthogonal', bias_initializer='zeros', unit_forget_bias=True, kernel_regularizer=None, recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, recurrent_constraint=None, bias_constraint=None, dropout=0.0, recurrent_dropout=0.0)

input:形如(samples,timesteps,input_dim)的3D张量

output:如果return_sequences=True:返回形如(samples,timesteps,output_dim)的3D张量,否则,返回形如(samples,output_dim)的2D张量


12目标函数或损失函数:常用categorical_crossentropy:亦称作多类的对数损失,注意使用该目标函数时,标签应该为多类模式,即one-hot编码的向量,而不是单个数值. 可以使用工具中的to_categorical函数完成该转换。

13优化器optimizer:可以在调用model.compile()之前初始化一个优化器对象,然后传入该函数(如上所示),也可以在调用model.compile()时传递一个预定义优化器名。在后者情形下,优化器的参数将使用默认值。

常用的几个:

  • SDG随机梯度下降法,支持动量参数,支持学习衰减率,支持Nesterov动量
keras.optimizers.SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
  • RMSprop:该优化器通常是面对递归神经网络时的一个良好选择
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)

  • Adam
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08)

14激活函数:
  • softmax:对输入数据的最后一维进行softmax,输入数据应形如(nb_samples, nb_timesteps, nb_dims)(nb_samples,nb_dims)

  • elu

  • softplus

  • softsign

  • relu(最常用),在其基础上还有高级激活函数,LeakYReLU,PReLU

  • tanh

  • sigmoid

  • hard_sigmoid

  • linear

15初始化方法:
  • Zeros,零初始化
  • Ones,一初始化
  • Constans,常数初始化
  • RandomNormal,正态分布初始化
  • RandomUniform,均匀分布初始化
  • TruncatedNormal,截尾高斯分布初始化,该初始化方法与RandomNormal类似,该分布是神经网络权重和滤波器的推荐初始化方法。
  • VarianceScaling,该初始化方法能够自适应目标张量的shape。
  • Orthogonal,用随机正交矩阵初始化
  • Identiy:使用单位矩阵初始化,仅适用于2D方阵
  • lecun_uniform,LeCun均匀分布初始化方法
  • glorot_normal, Glorot正态分布初始化方法

16回调函数Callbacks:一组在训练的特定阶段被调用的函数集,你可以使用回调函数来观察训练过程中网络内部的状态和统计信息。通过传递回调函数列表到模型的.fit()中,即可在给定的训练阶段调用该函数集中的函数。

  • ModelCheckpoint,该回调函数将在每个epoch后保存模型到filepath
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)

  • EarlyStopping,当监测值不再改善时,该回调函数将中止训练
keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')

  • ReduceLROnPlateau:当评价指标不在提升时,减少学习率
keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)

17模型可视化: keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz),该函数将画出模型结构图,并保存成图片。

你可能感兴趣的:(Keras中文文档知识点整理)