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

375
Views
¿Cómo puedo usar la salida de la capa intermedia de un modelo como entrada para otro modelo?

Entreno un modelo A y trato de usar la salida de la capa intermedia con el name="layer_x" como una entrada adicional para el modelo B

Traté de usar la salida de la capa intermedia como en el documento de Keras https://keras.io/getting-started/faq/#how-can-i-obtain-the-output-of-an-intermediate-layer .

Modelo A:

 inputs = Input(shape=(100,)) dnn = Dense(1024, activation='relu')(inputs) dnn = Dense(128, activation='relu', name="layer_x")(dnn) dnn = Dense(1024, activation='relu')(dnn) output = Dense(10, activation='softmax')(dnn)

Modelo B:

 input_1 = Input(shape=(200,)) input_2 = Input(shape=(100,)) # input for model A # loading model A model_a = keras.models.load_model(path_to_saved_model_a) intermediate_layer_model = Model(inputs=model_a.input, outputs=model_a.get_layer("layer_x").output) intermediate_output = intermediate_layer_model.predict(data) merge_layer = concatenate([input_1, intermediate_output]) dnn_layer = Dense(512, activation="relu")(merge_layer) output = Dense(5, activation="sigmoid")(dnn_layer) model = keras.models.Model(inputs=[input_1, input_2], outputs=output)

Cuando depuro me sale un error en esta línea:

 intermediate_layer_model = Model(inputs=model_a.input, outputs=model_a.get_layer("layer_x").output) File "..", line 89, in set_model outputs=self.neural_net_asc.model.get_layer("layer_x").output) File "C:\WinPython\python-3.5.3.amd64\lib\site-packages\keras\legacy\interfaces.py", line 87, in wrapper return func(*args, **kwargs) File "C:\WinPython\python-3.5.3.amd64\lib\site-packages\keras\engine\topology.py", line 1592, in __init__ mask = node.output_masks[tensor_index] AttributeError: 'Node' object has no attribute 'output_masks'

Puedo acceder al tensor con get_layer("layer_x").output y output_mask es None . ¿Tengo que configurar manualmente una máscara de salida y cómo configuro esta máscara de salida si es necesario?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Hay dos cosas que pareces estar haciendo mal:

 intermediate_output = intermediate_layer_model.predict(data)

cuando hace .predict() , en realidad está pasando datos a través del gráfico y preguntando cuál será el resultado. Cuando haga eso, intermediate_output será una matriz numpy y no una capa como le gustaría que fuera.

En segundo lugar, no necesita recrear un nuevo modelo intermedio. Puedes usar directamente la parte de model_a que te interese.

Aquí hay un código que "compila" para mí:

 from keras.layers import Input, Dense, concatenate from keras.models import Model inputs = Input(shape=(100,)) dnn = Dense(1024, activation='relu')(inputs) dnn = Dense(128, activation='relu', name="layer_x")(dnn) dnn = Dense(1024, activation='relu')(dnn) output = Dense(10, activation='softmax')(dnn) model_a = Model(inputs=inputs, outputs=output) # You don't need to recreate an input for the model_a, # it already has one and you can reuse it input_b = Input(shape=(200,)) # Here you get the layer that interests you from model_a, # it is still linked to its input layer, you just need to remember it for later intermediate_from_a = model_a.get_layer("layer_x").output # Since intermediate_from_a is a layer, you can concatenate it with the other input merge_layer = concatenate([input_b, intermediate_from_a]) dnn_layer = Dense(512, activation="relu")(merge_layer) output_b = Dense(5, activation="sigmoid")(dnn_layer) # Here you remember that one input is input_b and the other one is from model_a model_b = Model(inputs=[input_b, model_a.input], outputs=output_b)

Espero que esto sea lo que querías hacer.

Por favor, dime si algo no está claro :-)

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!