Getting an error during runtime after submitting values for a regression model in flask



  • Error:

      Traceback (most recent call last):
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 2463, in __call__
        return self.wsgi_app(environ, start_response)
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 2449, in wsgi_app
        response = self.handle_exception(e)
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 1866, in handle_exception
        reraise(exc_type, exc_value, tb)
      File "D:\Anaconda\lib\site-packages\flask\_compat.py", line 39, in reraise
        raise value
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 2446, in wsgi_app
        response = self.full_dispatch_request()
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
        rv = self.handle_user_exception(e)
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
        reraise(exc_type, exc_value, tb)
      File "D:\Anaconda\lib\site-packages\flask\_compat.py", line 39, in reraise
        raise value
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
        rv = self.dispatch_request()
      File "D:\Anaconda\lib\site-packages\flask\app.py", line 1935, in dispatch_request
        return self.view_functions[rule.endpoint](**req.view_args)
      File "D:\Flask\app.py", line 30, in login
        ypred = model.predict(np.array(total))
      File "D:\Anaconda\lib\site-packages\keras\engine\training.py", line 1462, in predict
        callbacks=callbacks)
      File "D:\Anaconda\lib\site-packages\keras\engine\training_arrays.py", line 324, in predict_loop
        batch_outs = f(ins_batch)
      File "D:\Anaconda\lib\site-packages\tensorflow\python\keras\backend.py", line 3292, in __call__
        run_metadata=self.run_metadata)
      File "D:\Anaconda\lib\site-packages\tensorflow\python\client\session.py", line 1458, in __call__
        run_metadata_ptr)
    tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable dense_3/bias from Container: localhost. This could mean that the variable was uninitialized. Not found: Container localhost does not exist. (Could not find resource: localhost/dense_3/bias)
         [[{{node dense_3/BiasAdd/ReadVariableOp}}]]
    

    app.py file;

    from flask import Flask,request,render_template
    from keras.models import load_model
    import numpy as np
    global model, graph
    import tensorflow as tf
    graph =  tf.get_default_graph()
    
    model = load_model('regressor.h5')
    
    app = Flask(__name__)
    
    @app.route('/')#when even the browser finds localhost:5000 then
    def home():#excecute this function
        return render_template('index.html')#this function is returing the index.html file
    @app.route('/login', methods =['POST']) #when you click submit on html page it is redirection to this url
    def login():#as soon as this url is redirected then call the below functionality
        a = request.form['a']
        b = request.form['b']
        c = request.form['c']
        d = request.form['s']
        if (d == "newyork"):
            s1,s2,s3 = 0,0,1
        if (d == "florida"):
            s1,s2,s3 = 0,1,0
        if (d == "california"):
            s1,s2,s3 = 1,0,0
    
        total = [[s1,s2,s3,a,b,c]]
        with graph.as_default():
            ypred = model.predict(np.array(total))
            y = ypred[0][0]
            print(ypred)
    
        # from html page what ever the text is typed  that is requested from the form functionality and is stored in a name variable
        return render_template('index.html' ,abc = y)#after typing the name show this name on index.html file where we have created a varibale abc
    
    
    if __name__ == '__main__':
        app.run(debug = True)
    

    html file;

    <html>
    <body>
    <form action = "http://localhost:5000/login" method = "post">
    <p>enter marketing speed amount</p>
    <p> <input type = "text" name = "a" /></p>
    <p>enter Administartive amount</p>
    <p> <input type = "text" name = "b" /></p>
    <p>enter R and d amount</p>
    <p> <input type = "text" name = "c" /></p>
    <select name = 's'>
    <option value = "newyork"> newyork </option>
    
    <option value = "florida"> florida </option>
    <option value = "california"> california </option>
    </select>
    
    <p> <input  type = "submit" value = "submit"/></p>
    </form>
    <b>{{abc}}</b>
    </body>
    </html>
    

    Regression Model;

    import numpy as np
    import pandas as pd
    import sklearn
    import keras
    data=pd.read_csv(r"C:\Users\anil\Anaconda3\50_Startups.csv")
    from sklearn.preprocessing import LabelEncoder
    le=LabelEncoder()
    x=data.iloc[:,:4].values
    y=data.iloc[:,-1:].values
    x[:,3]=le.fit_transform(x[:,3])
    
    from sklearn.preprocessing import OneHotEncoder
    one=OneHotEncoder()
    z=one.fit_transform(x[:,3:]).toarray()
    x=np.delete(x,3,axis=1)
    x=np.concatenate((z,x),axis=1)
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
    from sklearn.preprocessing import StandardScaler
    sc=StandardScaler()
    x_train=sc.fit_transform(x_train)
    x_test=sc.transform(x_test)
    from keras.models import Sequential
    from keras.layers import Dense
    regressor=Sequential()
    regressor.add(Dense(units=6,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=7,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=8,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    regressor.add(Dense(units=9,init="random_uniform",activation="relu"))
    
    regressor.add(Dense(units=1,init="random_uniform"))
    regressor.compile(optimizer='adam',loss='mse',metrics=['mse'])
    regressor.fit(x_train,y_train,batch_size=10,epochs=170)
    y_pred = regressor.predict(x_test)
    print(y_pred)
    import matplotlib.pyplot as plt
    plt.plot(y_pred,color='red')
    plt.plot(y_test,color='blue')
    from sklearn.metrics import r2_score
    accuracy = r2_score(y_test,y_pred)
    print(accuracy)
    regressor.save('regressor.h5')
    

    please help, i do not seem to understand the error. The data was from a csv file called 50_Startups.csv I'm new to flask. The model was trained to predict the profit earned by a startup by studying the following inputs; State,Market spend,R and D spending,Administrative spending.


Log in to reply