Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

323
Visualizações
Entrena solo algunas incrustaciones de palabras (Keras)

En mi modelo, uso incrustaciones pre-entrenadas de GloVe. Deseo mantenerlos no entrenables para disminuir la cantidad de parámetros del modelo y evitar el sobreajuste. Sin embargo, tengo un símbolo especial cuya incrustación quiero entrenar.

Usando la capa de incrustación provista, solo puedo usar el parámetro 'entrenable' para establecer la capacidad de entrenamiento de todas las incrustaciones de la siguiente manera:

 embedding_layer = Embedding(voc_size, emb_dim, weights=[embedding_matrix], input_length=MAX_LEN, trainable=False)

¿Existe una solución a nivel de Keras para entrenar solo un subconjunto de incrustaciones?

Tenga en cuenta:

  1. No hay suficientes datos para generar nuevas incrustaciones para todas las palabras.
  2. Estas respuestas solo se relacionan con TensorFlow nativo.
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Encontré una buena solución, inspirada en las dos capas de incrustaciones de Keith.

Idea principal:

Asigne los tokens especiales (y el OOV) con las ID más altas. Genere una 'oración' que contenga solo fichas especiales, rellenada con 0 en cualquier otro lugar. Luego aplique incrustaciones no entrenables a la oración 'normal' e incrustaciones entrenables a los tokens especiales. Por último, agregue ambos.

Funciona bien para mí.

 # Normal embs - '+2' for empty token and OOV token embedding_matrix = np.zeros((vocab_len + 2, emb_dim)) # Special embs special_embedding_matrix = np.zeros((special_tokens_len + 2, emb_dim)) # Here we may apply pre-trained embeddings to embedding_matrix embedding_layer = Embedding(vocab_len + 2, emb_dim, mask_zero = True, weights = [embedding_matrix], input_length = MAX_SENT_LEN, trainable = False) special_embedding_layer = Embedding(special_tokens_len + 2, emb_dim, mask_zero = True, weights = [special_embedding_matrix], input_length = MAX_SENT_LEN, trainable = True) valid_words = vocab_len - special_tokens_len sentence_input = Input(shape=(MAX_SENT_LEN,), dtype='int32') # Create a vector of special tokens, eg: [0,0,1,0,3,0,0] special_tokens_input = Lambda(lambda x: x - valid_words)(sentence_input) special_tokens_input = Activation('relu')(special_tokens_input) # Apply both 'normal' embeddings and special token embeddings embedded_sequences = embedding_layer(sentence_input) embedded_special = special_embedding_layer(special_tokens_input) # Add the matrices embedded_sequences = Add()([embedded_sequences, embedded_special])
over 4 years ago · Santiago Trujillo Relatório

0

No he encontrado una buena solución como una máscara para la capa de incrustación. Pero esto es lo que he querido probar:

  • Dos capas de incrustación: una entrenable y otra no
  • El que no se puede entrenar tiene todas las incrustaciones de Glove para palabras en el vocabulario y vectores cero para otros
  • El entrenable solo mapea las palabras OOV y símbolos especiales
  • Se agrega la salida de estas dos capas (estaba pensando en esto como ResNet)
  • El Conv/LSTM/etc debajo de la incrustación no se modifica

Eso le daría una solución con una pequeña cantidad de parámetros gratuitos asignados a esas incrustaciones.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda