Не удалось получить алгоритм свертки. Вероятно, это связано с тем, что cuDNN не удалось инициализировать фреймворк Flask

#python #tensorflow #flask

Вопрос:

Я сделал CNN и хочу использовать фреймворк Flask для создания веб-приложения для прогнозирования изображений. Я понял ошибку из названия. Мой CNN работает на локальном уровне, когда я очень хорошо использую обучающие изображения и тестовые изображения для прогнозирования, 97,8% на процессоре и более 95% на GPU.

Это мой код для колбы:

 def cnnFlask(trainImages, trainLabels):
    os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
    tensorflow.random.set_seed(1)

    trainImages = np.array(trainImages)
    trainLabels = np.array(trainLabels)

    trainImages = trainImages / 255

    model = Sequential()

    model.add(Conv2D(filters = 32, kernel_size = (3, 3), padding = 'same', activation = 'relu', input_shape = (224, 224, 3)))
    model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))

    model.add(Conv2D(filters = 64, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
    model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))

    model.add(Conv2D(filters = 128, kernel_size = (3, 3), padding = 'same', activation = 'relu'))
    model.add(MaxPool2D(pool_size = (2, 2), strides = (2, 2)))

    model.add(Flatten())

    model.add(Dense(units = 256, activation = 'relu'))

    model.add(Dense(units = 9, activation = 'softmax'))

    opt = Adam(learning_rate = 0.001)

    model.compile(optimizer = opt, loss = 'sparse_categorical_crossentropy', metrics = ['accuracy'])

    model.fit(trainImages, trainLabels, epochs = 15, batch_size = 64)

    model.save("myModel.h5")


app = Flask(__name__)

model = load_model('C:/Users/razva/OneDrive/Desktop/Vehicle Color Recognition/myModel.h5')

model.make_predict_function()

print('Model loaded. Check http://127.0.0.1:5000/')

def predictModel(imagePath, model):
    image = Image.open(imagePath)

    image = image.resize((224, 224))

    image = np.array(image)

    image = image.reshape(-1, 224, 224, 3)

    image = image / 255

    pred = model.predict(image)

    return pred

@app.route('/', methods=['GET'])
def index():
    # Main page
    return render_template('index.html')

@app.route('/predict', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        # Get the file from post request
        f = request.files['file']

        # Save the file to ./uploads
        basepath = os.path.dirname(__file__)
        file_path = os.path.join(
            basepath, 'uploads', secure_filename(f.filename))
        f.save(file_path)

        preds = predictModel(file_path, model)

        result = np.argmax(preds, axis = -1)

        return str(result)

    return None
 

Итак, что здесь не так? Я попытался провести небольшой тест в терминале, не используя колбу, и это сработало, мой прогноз CNN был правильным