AttributeError:'Sequential'对象没有属性'_built'

时间:2018-06-12 16:48:54

标签: python-3.x keras pickle

我正在进行转学习,我正在使用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 = loaded_model.predict(array) 我正在

  

AttributeError:'Sequential'对象没有属性'_built'

1 个答案:

答案 0 :(得分:1)

您不应使用picke.dump来保存权重并加载为模型。而是使用提供的函数model.save(filename)model.save_weights(filename)分别保存模型或权重。在你的情况下,你可以这样做:

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

您需要h5py个套件才能使用这些功能。