keras笔记

    xiaoxiao2022-07-02  142

    1)embedding层

    embedding(vocab_size,64,input_length=maxword) 是 将用整数索引表示的单词所构成的句子,映射成使用向量表示的单词 构成句子。 他的输入是 batch_size 个句子,每个句子是maxword大小,即(batch,maxword),经过此层后,变为(batch,maxword,64) 当训练结束后,每个单词都会 学到自己的词向量。自己理解:当embedding层后加一个conv1d时。64相当于channel。 NOTE:

    embedding层可以用来自己训练词向量,设置trainable=True。也可以使用训练好的词向量,设置trainable=False.并传入词向量矩阵。具体代码: embedding_layer = Embedding(input_dim=vocb_size, output_dim=EMBEDDING_DIM, weights=[embedding_matrix], input_length=MAX_SEQUENCE_LENGTH, trainable=False)

    此时embedding层参数为:input_dim=vocb_size,意思是构建的词典的大小,所有单词的个数。即embedding_matrix的行数。output_dim为构建好的词向量矩阵的嵌入维度。即embedding_matrix的列数。weights即为构建好的词向量。input_length为输入的 每句话的单词个数(之前已经进行过padding操作)。 embedding层的输入为(batch,maxword) 输出为(batch,maxword,embedding_dim)。即将单词的整数索引用训练好的词向量来替代。

    2)LSTM

    lstm需要注意的就是两种参数设置。一个是return_sequences,一个是return_state。 return_sequences是用来控制输出hidden_state的。 return_sequences=True即输出所有的hidden_state。 return_sequences=False即输出最后一个时间步的hidden_state。 return_state 是用来控制最后时间步state的,包括hidden_state和cell_state。 (1)h = LSTM(x) return_sequences和return_state默认是false。此时只返回一个hidden state值. (2)sequence,state_h,state_c = LSTM(1,return_sequence=False,return_state=True) 此时sequence是最后一个时间步的hidden_state. state_h为最后一个时间步的hidden_state state_c为最后一个时间步的cell_state. (3) sequence,state_h,state_c = LSTM(1,return_sequence=True,return_state=True) 此时,sequence为所有时间步的hidden_state. state_h为最后一个时间步的hidden_state state_c为最后一个时间步的cell_state.

    3) 卷积层维度

    Conv2D(filters = 64, kernel_size = 5,padding=‘same’,input_shape=(128,128,3)) 在这里 当Con2D作为第一层时,需要指定输入的维度,(128,128,3)指的是128*128像素的图片,它有3个通道。 在nunpy中构建 shape为 128 * 128 * 3的array时,不太好理解,因为我之前写过的一般都是 3 *128 * 128的图片,可以很直观的理解每个通道都在不同的维度。 例如 3个通道,就代表有3个二维矩阵 但在keras中,默认参数就是这样规定的,可以通过data_format=‘channels_first’来设置将输入的第一个维度认为是channel。使用Con2D时,输入一张图片,输入的维度是(宽,高,通道) 使用Con1D时,输入的是一个句子,输入的维度是(单词个数,词向量维度),本例中是(400,64),一句话有400个单词,每个单词使用64维来表示。这里的64就相当于channel。

    NOTE:

    1.

    data_format: A string, one of “channels_last” or"channels_first".“channels_last”(batch, height, width, channels)“channels_first”(batch, channels, height, width).keras 中,Conv2D有的输入数据有两种格式。一个是通道在前,一个是通道在后。不需指定batch,但要指定hight,width,channels.

    2. padding

    这里的padding并不是cnn教程里的四周填补 padding =‘same’ n_output = n_input/s 向上取整 padding = ‘valid’ n_output = (n_input-f+1) /s 向上取整

    最新回复(0)