【问题标题】:keras model.load_weights error NoneType' object has no attribute 'fit'keras model.load_weights 错误 NoneType' 对象没有属性 'fit'
【发布时间】:2021-03-22 16:56:59
【问题描述】:

希望有人能提供帮助,我正在尝试基于另一个预训练模型来训练模型,但我不断收到此错误。

提前致谢。 和愉快的编码。

型号

model = Unet(backbone_name=efficientnetb2, encoder_weights='imagenet',
             input_shape=(256, 256, 3),
             classes=1, activation='sigmoid')
    model = get_model(
        mparams['backbone'], 
        input_shape=(mparams['img_size'], mparams['img_size'], 3),
        loss_type=mparams['loss'],
        umodel=mparams['umodel'],
        lr=mparams['lr']
    )
    
    # load model
    model = model.load_weights('./models_v24/model_0.hdf5')

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-19-b3a8ba8f71c6> in <module>
     41             resize=None
     42         )
---> 43         model, history = train_model(PARAMS, n, train_datagen, val_datagen)
     44         plt.plot(history.history['loss'], label='loss')
     45         plt.plot(history.history['val_loss'], label='val_loss')

<ipython-input-17-191deeedc4ed> in train_model(mparams, n_fold, train_datagen, val_datagen)
     53     model = model.load_weights('./models_v24/model_0.hdf5')
     54 
---> 55     history = model.fit(
     56                         train_datagen,
     57                         validation_data=val_datagen,

AttributeError: 'NoneType' object has no attribute 'fit'

【问题讨论】:

    标签: python tensorflow keras deep-learning


    【解决方案1】:

    您的评论 # load model 不正确。您只是在此处加载权重,不是整个模型。此函数在以 HDF5 格式加载权重时返回 None,这解释了此处的当前错误。

    如果创建了模型,你只需要model.load_weights('./models_v24/model_0.hdf5')。那么你应该能够拟合模型。

    model = get_model(...)
    
    # load weights
    model.load_weights('./models_v24/model_0.hdf5')
    

    我还注意到您不接受 SO 中的某些答案。请看What should I do when someone answers my question?

    【讨论】:

    • @OscarRangel:我没有否决你的问题,请不要假设知道是谁做的。
    • @OscarRangel 您能否接受答案,因为它解决了您的问题。 (在投票按钮下方打勾。)
    • 谢谢,@Frightera 不知道有人必须这样做。
    【解决方案2】:

    不要使用 [model = model.load_weights()] 直接使用 [model.load_weights()]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2021-02-17
      • 2023-02-17
      • 2017-12-20
      相关资源
      最近更新 更多