Ich habe ein Klassifizierungsprogramm mit Keras implementiert. Ich habe eine große Menge von Bildern und möchte jedes Bild mit einer For-Schleife vorhersagen.Keras vorherzusagen Speicherwechsel unbegrenzt
Jedes Mal, wenn ein neues Bild berechnet wird, erhöht sich der Swap-Speicher. Ich habe versucht, alle Variablen innerhalb der Vorhersagefunktion zu löschen (und ich bin sicher, dass es innerhalb dieser Funktion ist, dass es ein Problem gibt), aber der Speicher erhöht sich immer noch.
for img in images:
predict(img, model, categ_par, gl_par)
und die entsprechende Funktion:
def predict(image_path, model, categ_par, gl_par):
print("[INFO] loading and preprocessing image...")
orig = cv2.imread(image_path)
image = load_img(image_path, target_size=(gl_par.img_width, gl_par.img_height))
image = img_to_array(image)
# important! otherwise the predictions will be '0'
image = image/255
image = np.expand_dims(image, axis=0)
# build the VGG16 network
if(categ_par.method == 'VGG16'):
model = applications.VGG16(include_top=False, weights='imagenet')
if(categ_par.method == 'InceptionV3'):
model = applications.InceptionV3(include_top=False, weights='imagenet')
# get the bottleneck prediction from the pre-trained VGG16 model
bottleneck_prediction = model.predict(image)
# build top model
model = Sequential()
model.add(Flatten(input_shape=bottleneck_prediction.shape[1:]))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(categ_par.n_class, activation='softmax'))
model.load_weights(categ_par.top_model_weights_path)
# use the bottleneck prediction on the top model to get the final classification
class_predicted = model.predict_classes(bottleneck_prediction)
probability_predicted = (model.predict_proba(bottleneck_prediction))
classe = pd.DataFrame(list(zip(categ_par.class_indices.keys(), list(probability_predicted[0])))).\
rename(columns = {0:'type', 1: 'prob'}).reset_index(drop=True)
#print(classe)
del model
del bottleneck_prediction
del image
del orig
del class_predicted
del probability_predicted
return classe.set_index(['type']).T
Sie scheinen jedes Mal ein neues Modell zu bauen, wenn eine Vorhersage gemacht wird. Bist du sicher, dass du das willst? –