albermax / innvestigate

A toolbox to iNNvestigate neural networks' predictions!
Other
1.26k stars 233 forks source link

All layer names should be unique. #238

Closed ameya1693 closed 3 years ago

ameya1693 commented 3 years ago

This is my code below:

def load_all_models(n_models): all_models = list() for i in range(n_models):

define filename for this ensemble

    filename = 'models/model_' + str(i + 1) + '.h5'
    # load model from file
    model = load_model(filename)
    # add to list of members
    all_models.append(model)
    print('>loaded %s' % filename)
return all_models

define stacked model from multiple member input models

def define_stacked_model(members):

update all layers in all models to not be trainable

for i in range(len(members)):
    model = members[i]
    for layer in model.layers:
        # make not trainable
        layer.trainable = False
        # rename to avoid 'unique layer name' issue
        layer._name = 'ensemble_' + str(i+1) + '_' + layer.name

# define multi-headed input
ensemble_visible = [model.input for model in members]
# concatenate merge output from each model
ensemble_outputs = [model.output for model in members]
merge = concatenate(ensemble_outputs)
hidden = Dense(10, activation='relu')(merge)
output = Dense(3, activation='linear')(hidden)
model = Model(inputs=ensemble_visible, outputs=output)
# plot graph of ensemble
plot_model(model, show_shapes=True, to_file='model_graph.png')
# compile
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error'])
return model

I'm a beginner with machine learning. Can you help me with this?

adrhill commented 3 years ago

Hi ameya,

I'm closing this issue as it doesn't seem to be related to our iNNvestigate package. You might want to ask a general Keras help forum!