尝试在tf.keras上重命名预训练模型时出错

时间:2019-07-04 10:56:31

标签: python tensorflow keras deep-learning conv-neural-network

我训练了两个模型以使其合体, 当我尝试使用此代码加载它们时:

  from tensorflow.keras.models import load_model
  models=[]
  modelTemp=load_model('models/full.h5')
  modelTemp.name = "inception1"
  models.append(modelTemp)

发生错误:

  AttributeError: Can't set the attribute "name", likely because it conflicts with an existing read-only @property of the object. Please choose a different name.

完整的错误消息:

[span.iterators]

---------------------------------------------------------------------------

AttributeError跟踪(最近一次通话) setattr 中的/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py(自身,名称,值)    1968年尝试: -> 1969超级(tracking.AutoTrackable,自我)。 setattr (名称,值)    1970年,除了AttributeError:

AttributeError:无法设置属性

在处理上述异常期间,发生了另一个异常:

AttributeError跟踪(最近一次通话) 2帧 setattr 中的/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py(自身,名称,值)    1972年(“无法设置属性“ {}”,可能是因为它与“    1973'对象的现有只读@property。请选择一个 -> 1974'不同的名称。'。format(名称))    1975年回归    1976

AttributeError:无法设置属性“名称”,可能是因为它与对象的现有只读@property冲突。请选择其他名称。

2 个答案:

答案 0 :(得分:2)

根据this question here on StackOverflow 您需要使用:

modelTemp._name = 'inception'

答案 1 :(得分:-1)

我在How to rename Pre-Trained model ? ValueError 'Trained Model' is not a valid scope name

回答了相同的话题

解决方案是:

model = load_model(r"C:\Master\Learning\Agri_Intelligence\Models\Model.h5")
model._name = "New_Model_Name"
model.save(r"C:\Master\Learning\Agri_Intelligence\Models\New_Model.h5")
相关问题