Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

181
Views
¿Cómo usar funciones adicionales junto con incrustaciones de palabras en Keras?

Estoy entrenando un modelo LSTM con Keras en el conjunto de datos que se parece a lo siguiente. La variable "Descripción" es un campo de texto y "Edad" y "Género" son campos categóricos y continuos.

 Age, Gender, Description 22, M, "purchased a phone" 35, F, "shopping for kids"

Estoy usando incrustación de palabras para convertir los campos de texto en vectores de palabras y luego ingresarlo en el modelo de keras. El código se da a continuación:

 model = Sequential() model.add(Embedding(word_index, 300, weights=[embedding_matrix], input_length=70, trainable=False)) model.add(LSTM(300, dropout=0.3, recurrent_dropout=0.3)) model.add(Dropout(0.6)) model.add(Dense(1)) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy'])

Este modelo se está ejecutando correctamente, pero también quiero ingresar las variables "edad" y "género" como características. ¿Qué cambios se requieren en el código para usar estas funciones también?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Desea agregar más capas de entrada, lo que no es posible con el modelo secuencial, debe optar por un modelo funcional

 from keras.models import Model

lo que le permite tener múltiples entradas y conexiones indirectas.

 embed = Embedding(word_index, 300, weights=[embedding_matrix], input_length=70, trainable=False) lstm = LSTM(300, dropout=0.3, recurrent_dropout=0.3)(embed) agei = Input(shape=(1,)) conc = Concatenate()(lstm, agei) drop = Dropout(0.6)(conc) dens = Dense(1)(drop) acti = Activation('sigmoid')(dens) model = Model([embed, agei], acti) model.compile(loss='binary_crossentropy', optimizer='adam', metrics['accuracy'])

No puede concatenar antes de la capa LSTM ya que no tiene sentido y también tendrá un tensor 3D después de incrustar la capa y la entrada es un tensor 2D.

over 4 years ago · Santiago Trujillo Report

0

Escribí sobre cómo hacer esto en keras . Es básicamente un modelo de entrada múltiple funcional, que concatena ambos vectores de funciones de esta manera:

 nlp_input = Input(shape=(seq_length,), name='nlp_input') meta_input = Input(shape=(10,), name='meta_input') emb = Embedding(output_dim=embedding_size, input_dim=100, input_length=seq_length)(nlp_input) nlp_out = Bidirectional(LSTM(128))(emb) x = concatenate([nlp_out, meta_input]) x = Dense(classifier_neurons, activation='relu')(x) x = Dense(1, activation='sigmoid')(x) model = Model(inputs=[nlp_input , meta_input], outputs=[x])
over 4 years ago · Santiago Trujillo Report

0

Considere tener una red de avance separada que tome esas características y genere un vector n dimensional.

 time_independent = Input(shape=(num_features,)) dense_1 = Dense(200, activation='tanh')(time_independent) dense_2 = Dense(300, activation='tanh')(dense_1)

En primer lugar, utilice la API funcional de Keras para hacer algo como esto.

Luego, pasaría esto como el estado oculto del LSTM, o puede concatenarlo con cada palabra incrustada para que el lstm lo vea en cada paso de tiempo. En el último caso, querrá reducir drásticamente la dimensionalidad de la red.

Si necesitas un ejemplo, házmelo saber.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!