keras使用

一、pad_sequences

from keras.preprocessing.sequence import pad_sequences

 keras只能接受长度相同的序列输入。因此如果目前序列长度参差不齐,这时需要该模块

 该函数是将序列转化为经过填充以后的一个长度相同的新序列新序列

二、keras中的Sequential模型

 Sequential更准确的应该理解为堆叠,通过堆叠许多层,构建出深度神经

 Sequential模型的核心操作是添加layers(图层),以下展示如何将一些最流行的图层添加到模型中:

 如下代码向模型添加一个带有64个大小.3 * 3的过滤器的卷积层:

from keras.models import Sequential
from keras.layers import Conv2D

model = Sequential()
model.add( Conv2D(64, (3, 3), activation='relu') )

三、keras.layers.Embedding

 嵌入层将正整数(下标)转换为具有固定大小的向量,如 [ [4],[20] ] ->[ [0.25,0.1],[0.6,-0.2] ]Embedding层只能作为模型的第一层

from keras.layers import Embedding
embedding_layer = Embedding(VOCAB_SIZE + 1,
                            EMBEDDING_DIM,
                            weights=[embedding_matrix],
                            input_length=TIME_STAMPS,
                            trainable=False,
                            mask_zero=True)

 这里的参数解释一下:

  • input_dim:大或等于0的整数,字典长度,即输入数据最大下标+1

  • output_dim:大于0的整数,代表全连接嵌入的维度

  • init:初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的Theano函数。该参数仅在不传递weights参数时有意义。

  • weights:权值,为numpy array的list。该list应仅含有一个如(input_dim,output_dim)的权重矩阵

  • W_regularizer:施加在权重上的正则项,为WeightRegularizer对象

  • W_constraints:施加在权重上的约束项,为Constraints对象

  • mask_zero:布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常

  • input_length:当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。

  • dropout:0~1的浮点数,代表要断开的嵌入比例

 关于Embedding层,请参考

 

四、keras 双向LSTM

from keras.models import Sequential
from keras.layers import Bidirectional, LSTM
model.add( Bidirectional( LSTM(128, return_sequences=True) ) )

 return_sequences: 如果为True的话,只返回最后一个状态的输出,是一个(samples,output_dim)2D张量,如果是False,则是返回所有序列状态的输出,是一个(samples,timesteps,output_dim)3D张量

 LSTM中的128,即是units参数,表示输出向量维度,请参考

 参数意义参考

 关于其过程,请参考,下面的图片来自该博客:

五、keras Dense层

 Dense就是常用的全连接层

六、keras TimeDistributed

七、keras CRF

from keras_contrib.layers.crf import CRF
crf_layer = CRF(self.NUM_CLASSES, sparse_target=True)
model.add(crf_layer)

八、compile

原文地址:https://www.cnblogs.com/always-fight/p/10718887.html