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

376
Visualizações
¿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 Respostas
Responde à pergunta

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 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