我有一个有效的 Keras 模型,可以在 repl 中做出很好的预测,但在多次访问时无法加载到 Flask 应用程序中。
K.clear_session()并graph = tf.get_default_graph()没有为我工作。
model1 = Sequential()
model1.add(Conv2D(32, 3, padding='same', input_shape=(256,256,3), activation='relu'))
model1.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
#print("First layer...")
model1.add(Conv2D(32, 3, padding='same', activation='relu'))
model1.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
#print("Second layer...")
model1.add(Conv2D(64, 3, padding='same', activation='relu'))
model1.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model1.add(Flatten())
model1.add(Dense(64))
model1.add(Activation('relu'))
model1.add(Dropout(0.5))
model1.add(Dense(1))
model1.add(Activation('sigmoid'))
model1.load_weights("Weights_model1.h5")
model2 = Sequential()
model2.add(Conv2D(32, 3, padding='same', input_shape=(256,256,3), activation='relu'))
model2.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
#print("First layer...")
model2.add(Conv2D(32, 3, padding='same', activation='relu'))
model2.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
#print("Second layer...")
model2.add(Conv2D(64, 3, padding='same', activation='relu'))
model2.add(MaxPooling2D(pool_size=(2, 2), data_format="channels_first"))
model2.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model2.add(Dense(64))
model2.add(Activation('relu'))
model2.add(Dropout(0.5))
model2.add(Dense(1))
model2.add(Activation('sigmoid'))
model2.load_weights("Weights_model2.h5")
Training_water_data = 'C:\\Users\\ysmehta\\'+folder+'\\'
training_water_data = [x for x in sorted(os.listdir(Training_water_data))]
x_train_water_data = np.empty((len(training_water_data),256,256,3),dtype = 'float32')
for i,name in enumerate(training_water_data):
im = cv2.imread(Training_water_data + name).astype('int16').astype('float32')/255.
im = im[:,:,:]
im = cv2.resize(im,dsize = (256,256),interpolation = cv2.INTER_NEAREST)
x_train_water_data[i] = im
x_train_water_data = x_train_water_data.reshape(x_train_water_data.shape[0],256,256,3)
for i in range(0,x_train_water_data.shape[0]):
A = x_train_water_data[i]
B = A.reshape(1,256,256,3)
prediction1 = model1.predict(B,verbose=0)
if (prediction1 >= 0.7):
prediction2 = model2.predict(B, verbose=0)
else:
returnstring="No manhole found"
prediction2 = -1
if(prediction2 >= 0.6):
returnstring="Water Leakage"
else:
if(prediction1 >= 0.7):
returnstring="Not a Leakage"
return returnstring;
if __name__ == "__main__":
app.run(host='131.163.144.196',port=5000)`