【问题标题】:ValueError: The name "dense_1" is used 2 times in the model. All layer names should be uniqueValueError:名称“dense_1”在模型中使用了 2 次。所有图层名称都应该是唯一的
【发布时间】:2019-06-05 08:07:28
【问题描述】:

我正在尝试进行迁移学习,但我发现了这个错误并且我无法修复它。有人可以帮帮我吗?

import numpy as np
import os
import keras
import matplotlib.pyplot as plt
from keras.layers import Dense
from keras.models import load_model, Model
from keras import backend as K
from keras.datasets import mnist
from keras.utils import np_utils

Modelo = load_model('Mono64_9.h5')

x=Modelo.output
x=Dense(512, activation='relu')(x)
x=Dense(256, activation='relu')(x)
x=Dense(128, activation='relu')(x)
preds=Dense(3,activation='softmax')(x)

model=Model(inputs=Modelo.input,outputs=preds)

ValueError:名称“dense_1”在模型中使用了 2 次。所有图层名称都应该是唯一的。

【问题讨论】:

  • 如果你在内核/笔记本中,当你重新运行一个模型代码块时,你可能需要K.clear_session()。否则,请尝试明确命名您的附加层。

标签: python machine-learning keras deep-learning


【解决方案1】:

最有可能发生的情况是您加载的模型已经有密集层,这些密集层在您构建它们时使用密集层的通用默认值命名(即dense_1dense_2 等)。我不确定您在迁移学习任务中尝试做什么 - 无论您是要向网络添加更多 Dense 层,还是要删除 Dense 层并添加新层。

无论哪种方式,要运行此特定版本的代码,您都需要添加一个额外的 name 属性来唯一地命名新层。

这样的事情可能会起作用:

import numpy as np
import os
import keras
import matplotlib.pyplot as plt
from keras.layers import Dense
from keras.models import load_model, Model
from keras import backend as K
from keras.datasets import mnist
from keras.utils import np_utils

Modelo = load_model('Mono64_9.h5')

x=Modelo.output
x=Dense(512, activation='relu', name="dense_a")(x) # New
x=Dense(256, activation='relu', name="dense_b")(x) # New
x=Dense(128, activation='relu', name="dense_c")(x) # New
preds=Dense(3,activation='softmax', name="dense_output")(x) # New

model=Model(inputs=Modelo.input,outputs=preds)

【讨论】:

    【解决方案2】:

    模型Mono64_9.h5 很可能有一个名为dense_1 的层,因为这是第一个自动生成的密集层名称。您可以明确地为新层命名,这样它们就不会与原始模型冲突,例如:

    x=Dense(512, activation='relu', name='dense_10')(x)
    x=Dense(256, activation='relu', name='dense_11')(x)
    x=Dense(128, activation='relu', name='dense_12')(x)
    preds=Dense(3,activation='softmax', name='dense_out')(x)
    

    您可以给图层起任何名称,它们是任意的,仅供用户按名称引用图层。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 2020-12-31
      • 2019-06-14
      相关资源
      最近更新 更多