代码之家  ›  专栏  ›  技术社区  ›  Aakash aggarwal

attributeerror:“sequential”对象没有属性“\u build”

  •  0
  • Aakash aggarwal  · 技术社区  · 6 年前

    我正在做转移学习,我使用vgg16模型。我正在通过特征提取对模型进行微调。然后我训练了我的最终模型,我已经腌制了它的重量。 这是我的密码

    def prediction(array):
        size = 224
        array = image_array(filename , size)
        print(array.shape)
        array = np.array(array , dtype = np.float64)
        array = np.reshape(array, (1,224,224,3))
        print(array.shape)
        final_array = preprocess_input(array)
        vgg16 = VGG16(weights='imagenet', include_top=False)
        features = vgg16.predict(final_array)
        image = features.reshape(features.shape[0] , -1)
        #return image
        loaded_model = pickle.load(open('vgg16.sav', 'rb'))
        #print(image.shape)
        array = np.asarray(array)
        y_predict = loaded_model.predict(array)
    

    当我调用这个函数时,我得到的是 y_predict=加载的模型。predict(数组) 我得到

    attributeerror:“sequential”对象没有属性“\u build”

    1 回复  |  直到 6 年前
        1
  •  1
  •   nuric    6 年前

    你不应该用 picke.dump 将权重和载荷保存为模型。而是使用提供的函数 model.save(filename) model.save_weights(filename) 分别保存模型或仅保存权重。在您的情况下,您可以:

    vgg16.save('vgg16.h5')
    # ...
    loaded_model = keras.models.load_model('vgg16.h5')
    

    你需要 h5py 包以使用这些函数。