繁体   English   中英

pred = model.predict_classes([prepare(file_path)]) AttributeError: 'Functional' object 没有属性 'predict_classes'

[英]pred = model.predict_classes([prepare(file_path)]) AttributeError: 'Functional' object has no attribute 'predict_classes'

我正在尝试将 keras model 加载到 tkinter 上的修改后的蝴蝶物种分类器上

import cv2
import tensorflow as tf

CATEGORIES = ["Abyssinians", "American Shorthair", "Bengals", "Birman",
              "British Shorthairs", "Devon Rex", "Exotic Shorthairs", "Maine Coon",
              "Oriental Shorthairs", "Persians", "Ragdoll", "Scottish Folds", "Siamese", "Somali", "Sphynx"]  # will use this to convert prediction num to string value
def prepare(filepath):
    IMG_SIZE = 100 # 50 in txt-based
    img_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)  # read in the image, convert to grayscale
    new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))  # resize image to match model's expected sizing
    return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1)  # return the image with shaping that TF wants.

model = tf.keras.models.load_model("CAT_BREEDS.model")

prediction = model.predict([prepare(r'D:\Desktop\CATS\validation\Abyssinians\45997693_52.jpg')])
print(prediction)

以上是我用来训练我的 keras model 的代码,但是在尝试使用蝴蝶分类器预测 class 时出现此错误

pred = model.predict_classes([prepare(file_path)]) AttributeError: 'Functional' object 没有属性 'predict_classes'

import numpy as np from tensorflow import keras from tensorflow.keras.layers import Dense, GlobalAveragePooling2D from tensorflow.keras.optimizers import Adam from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.models import Model from sklearn.metrics import confusion_matrix导入 itertools 导入 matplotlib.pyplot 作为 plt

train_path=r'D:\Desktop\CATS - 复制 2\train' valid_path=r'D:\Desktop\CATS - 复制 2\validation' test_path=r'D:\Desktop\CATS - 复制 2\test'

class_labels=["Abyssinians", "American Shorthair", "Bengals", "Birman", "British Shorthairs", "Devon Rex", "Exotic Shorthairs", "Maine Coon", "Oriental Shorthairs", "Persians", " Ragdoll”、“Scottish Folds”、“Siamese”、“Somali”、“Sphynx”]

train_batches=ImageDataGenerator(preprocessing_function=keras.applications.xception.preprocess_input)
.flow_from_directory(train_path, target_size=(299,299),classes=class_labels,batch_size=5) valid_batches=ImageDataGenerator(preprocessing_function=keras.applications.xception.preprocess_input)
.flow_from_directory(valid_path, target_size=(299,299),classes=class_labels,batch_size=5) test_batches=ImageDataGenerator(preprocessing_function=keras.applications.xception.preprocess_input)
.flow_from_directory(test_path, target_size=(299,299),classes=class_labels,batch_size=5, shuffle=False)

base_model=keras.applications.xception.Xception(include_top=False)

x=base_model.output x=GlobalAveragePooling2D()(x) x=Dense(1024, activation='relu')(x) x=Dense(15, activation='sigmoid')(x) model=Model(inputs=base_model .输入,输出=x)

base_model.trainable = 假

N=1

model.compile(Adam(lr=.0001),loss='categorical_crossentropy', metrics=['accuracy']) history=model.fit_generator(train_batches, steps_per_epoch=200, validation_data=valid_batches, validation_steps=90,epochs=N,详细=1)

model_json = model.to_json() with open("model.json", "w") as json_file: json_file.write(model_json) model.save_weights('model_weights.h5')

打印(“[信息]评估 model...”)

test_labels=test_batches.classes 预测=model.predict_generator(test_batches, steps=28, verbose=1)

model.save('CAT_BREEDS.model')

我复制了你的代码。 因为我没有你的数据集,所以我使用了我自己的数据集,它有 2 个类。一个错误是行 x=Dense(15,activation='sigmoid')(x)。 由于您正在进行分类,因此您的激活应该是 activation='softmax'。 代码的 rest 似乎运行正常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM