尝试保存连锁模型时的KeyError

时间:2017-12-06 14:18:56

标签: python keras keyerror

您可以查看this问题以了解问题说明。我通过for循环创建7 models然后train创建它们(未在代码中提及培训过程):

for i in range(1, 8):
    j=str(i)
    img_input = Input(shape=(img_width,img_height,1),name='input')
    x = Conv2D(32, (3,3), activation='relu', padding='same', name='conv1-'+j)(img_input)
    x = MaxPooling2D((2, 2), strides=(2, 2), name='pool1-'+j)(x)
    x = Conv2D(64, (3,3), activation='relu', padding='same', name='conv2-'+j)(x)
    x = MaxPooling2D((2, 2), strides=(2, 2), name='pool2-'+j)(x)
    x = Conv2D(128, (3,3), activation='relu', padding='same', name='conv3-'+j)(x)
    x = MaxPooling2D((2, 2), strides=(2, 2), name='pool3-'+j)(x)
    x = Flatten()(x)
    x = Dense(512, name='dense1-'+j)(x)
    x = Dense(512, name='dense2-'+j)(x)
    predictions = Dense(6, activation='softmax', name='predictions-'+j)(x)
   model = Model(inputs=img_input, outputs=predictions)
   model.compile(optimizer='Adam', loss='binary_crossentropy', 
              metrics=['accuracy'])

弹出每个模型的最后softmax layer并将其余模型保存到名为models[]的列表中:

inputTensor = Input(shape=(img_width,img_height,1),name='inputs') 
for i in range (1,8):                                   #save models into a models[] list
    j = str(i)
    models[i] = load_model(path+j+"/weights.best.hdf5") #load models from disk
    models[i].layers.pop()                              #Pop last layer
    models[i].outputs= [models[i].layers[-1].output]    #Fix layer pop bug        
    models[i].layers[-1].outbound_nodes = []            #Fix layer pop bug
    for layer in models[i].layers:                      #Make intermediate
        layer.trainable=False                           #layers untrainable

为所有这些模型实现concat,然后尝试保存finalModel:

outputTensors= [models[m](inputTensor) for m in models]
output = Concatenate()(outputTensors)
predictions = Dense(6, activation='softmax', name='predictionss')(output)
model=Model(inputTensor, predictions)
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])
model.save('model')

但是当保存发生时会抛出错误:

Traceback (most recent call last):
File "<ipython-input-43-6221fb2664c1>", line 10, in <module>
    model.save('model')

  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\engine\topology.py", line 2553, in save
    save_model(self, filepath, overwrite, include_optimizer)

  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\models.py", line 107, in save_model
    'config': model.get_config()

  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\engine\topology.py", line 2326, in get_config
    layer_config = layer.get_config()

  File "C:\Anaconda3\envs\tensorflow\lib\site-packages\keras\engine\topology.py", line 2390, in get_config
    new_node_index = node_conversion_map[node_key]

KeyError: 'predictions-1_ib-0

我无法克服这个错误。 感谢你的帮助。

0 个答案:

没有答案