Keras―embedding嵌入层的用法详解

本文介绍了Keras中embedding层在NLP任务中的应用,详细解析了embedding层的参数,如input_dim, output_dim, input_length,并探讨了初始化方法,包括随机初始化和使用预训练词向量。通过示例展示了如何加载预训练词向量,以及通过weights参数和initializer设置embedding层的初始值。重点讨论了weights如何传递给embedding.embeddings,并分析了Layer类的build过程。" 126601649,11502821,Modbus485转Profinet网关在轧钢PLC控制系统中的应用,"['工业自动化', '物联网', 'PLC控制', '通讯转换', 'Modbus']
摘要由CSDN通过智能技术生成

最近在工作中进行了NLP的内容,使用的还是Keras中embedding的词嵌入来做的。

Keras中embedding层做一下介绍。

中文文档地址: https://keras.io/zh/layers/embeddings/

参数如下:

其中参数重点有input_dim,output_dim,非必选参数input_length.

初始化方法参数设置后面会单独总结一下。

demo使用预训练(使用百度百科(word2vec)的语料库)参考

embedding使用的demo参考:


    def create_embedding(word_index, num_words, word2vec_model):
     embedding_matrix = np.zeros((num_words, EMBEDDING_DIM))
     for word, i in word_index.items():
      try:
       embedding_vector = word2vec_model[word]
       embedding_matrix[i] = embedding_vector
      except:
       continue
     return embedding_matrix
     
    #word_index:词典(统计词转换为索引)
    #num_word:词典长度+1
    #word2vec_model:词向量的model

加载词向量model的方法:


    def pre_load_embedding_model(model_file):
     # model = gensim.models.Word2Vec.load(model_file)
     # model = gensim.models.Word2Vec.load(model_file,binary=True)
     model = gensim.models.KeyedVectors.load_word2vec_format(model_file)
     return model

model中Embedding层的设置(注意参数,Input层的输入,初始化方法):


     embedding_matrix = create_embedding(word_index, num_words, word2vec_model)
     
     embedding_layer = Embedding(num_words,
            EMBEDDING_DIM,
            embeddings_initializer=Constant(embedding_matrix),
            input_length=MAX_SEQUENCE_LENGTH,
            trainable=False)
     sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
     embedded_sequences = embedding_layer(sequence_input)

embedding层的初始化设置

keras embeding设置初始值的两种方式

随机初始化Embedding


    from keras.models import Sequential
    from keras.layers import Embedding
    import numpy as np
     
    model = Sequential()
    model.add(Embedding(1000, 64, input_length=10))
    # the model will take as input an integer matrix of size (batch, input_length).
    # the largest integer (i.e. word index) in the input should be no larger than 999 (vocabulary size).
    # now model.output_shape == (None, 10, 64), where None is the batch dimension.
     
    input_array = np.random.randint(1000, size=(32, 10))
     
    model.compile('rmsprop', 'mse')
    output_array = model.predict(input_array)
    print(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值