Python Google应用程序引擎:无法使用keras/tensorflow/flask加载资源
我目前正在使用tensorflow/keras和flask开发一个机器学习web应用程序。对于部署,我使用谷歌应用程序引擎(GAE) 在本地,我可以运行我的应用程序,通过UI获取一些数据,并使用我的旧模型显示预测(共有四个,都是.h5文件) 我可以在GAE上部署它,没有任何错误,但当我在浏览器中输入链接时,我会出现“502坏网关”错误,当我检查浏览器(Chrome)时,我会看到三条错误消息,说“加载资源失败” 我是网络开发新手,所以我不完全了解问题所在。我需要在.yaml文件中声明我的模型还是专门加载它们 My.yaml文件:Python Google应用程序引擎:无法使用keras/tensorflow/flask加载资源,python,tensorflow,google-app-engine,flask,keras,Python,Tensorflow,Google App Engine,Flask,Keras,我目前正在使用tensorflow/keras和flask开发一个机器学习web应用程序。对于部署,我使用谷歌应用程序引擎(GAE) 在本地,我可以运行我的应用程序,通过UI获取一些数据,并使用我的旧模型显示预测(共有四个,都是.h5文件) 我可以在GAE上部署它,没有任何错误,但当我在浏览器中输入链接时,我会出现“502坏网关”错误,当我检查浏览器(Chrome)时,我会看到三条错误消息,说“加载资源失败” 我是网络开发新手,所以我不完全了解问题所在。我需要在.yaml文件中声明我的模型还是专
env: flex
runtime: python
runtime_config:
python_version: 3
My main.py文件:
import pandas as pd
import tensorflow as tf
from keras.models import load_model
from keras.backend import set_session
from utils import instagram_scraper
from utils import image_preprocessing
from utils import label_encoding
from utils import overall_class_label
from sklearn.preprocessing import LabelEncoder
global sess
global graph
sess = tf.compat.v1.Session()
graph = tf.compat.v1.get_default_graph()
tf.compat.v1.keras.backend.set_session(sess)
num_attributes = 4
model = [[] for i in range(num_attributes)]
model[0] = load_model('./model/savemodels/glamorous_model.h5')
model[1] = load_model('./model/savemodels/rugged_model.h5')
model[2] = load_model('./model/savemodels/fun_model.h5')
model[3] = load_model('./model/savemodels/healthy_model.h5')
app = Flask(__name__)
def data_collection(brandname):
url = 'https://www.instagram.com/'+brandname+'/?hl=en'
scraper = instagram_scraper.InstagramScraper()
official_images = scraper.profile_page_posts(url)
return official_images
def data_preprocessing(official_images):
preprocessed_data = image_preprocessing.preprocessing(official_images)
return preprocessed_data
def make_prediction(preprocessed_data):
X_test = preprocessed_data
with graph.tf.compat.v1.as_default():
tf.compat.v1.keras.backend.set_session(sess)
y_pred = [[] for i in range(num_attributes)]
for i in range(num_attributes):
y_pred[i] = model[i].predict(X_test)
y_pred_label = overall_class_label.give_ovr_class_label_output(y_pred)
# convert from encoded label to label name
# encoded label
y_pred_lst = y_pred_label.tolist()
# map back to original label name
code2label = {0: 'glamorous', 1: 'rugged', 2: 'fun', 3: 'healthy'}
y_pred_lbnm = map(code2label.get, y_pred_lst)
y_pred_lbnm = list(y_pred_lbnm)
prediction = pd.Series(y_pred_lbnm).value_counts()
return prediction
@app.route("/", methods=["POST", "GET"])
def index():
if request.method == "POST":
brandname = request.form["brandname"]
return redirect(url_for("predict", brandname=brandname))
else:
return render_template("index.html")
@app.route("/predict/<brandname>", methods=["POST", "GET"])
def predict(brandname):
official_images = data_collection(brandname)
preprocessed_data = data_preprocessing(official_images)
prediction = make_prediction(preprocessed_data)
return render_template("predict.html", prediction=prediction)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=True)
非常感谢您的帮助,谢谢!
祝你一切顺利,
斯诺我理解您的担忧。502错误可能是由多种原因造成的。要获得更多信息,请从云控制台共享502错误的Stackdriver日志。嗨,Nibrass,感谢您的回复!当我现在尝试部署它时,它告诉我超出了配额。所以我没有访问日志文件的权限。是否可能.h5文件太大,无法及时从浏览器获得响应?它们每个大约有150MB。如果有人知道如何在Microsoft Azure上部署这样的应用程序,我非常乐意在那里尝试:)我能够成功地将同一个应用程序从本地git repo部署到远程azure repo,但当我单击URL时,我得到一个错误“503服务暂时不可用”。据我所知,我需要通过本地git repo来完成,因为我使用的模型太大,无法上传到GitHub(有四种型号,每种大约190MB)。对吗?您好,我理解您的担忧。正如错误所述,您试图加载太多资源或文件太多。请您分享完整的错误,看看是否是由于我之前所说的原因造成的。如果是这种情况,您需要打开谷歌云平台支持票证,并要求提高您的支持率AppEngine的配额是灵活的,但首先,正如我所说的,请分享完整的错误?我理解您的担忧。502错误可能是由许多原因造成的。要获得更多信息,请您从云控制台分享502错误的Stackdriver日志。嗨,Nibrass,感谢您的回复!当我现在尝试部署它时,请立即使用它告诉我已超过配额。因此,我无法访问日志文件。是否有可能.h5文件太大,无法及时从浏览器获得响应?每个文件约为150MB。如果有人知道如何在Microsoft Azure上部署此类应用程序,我非常乐意在那里尝试:)我能够成功地将同一应用程序从本地git repo部署到远程azure repo,但当我单击URL时,我得到一个错误“503服务暂时不可用”。据我所知,我需要通过本地git repo进行部署,因为我使用的模型太大,无法上载到GitHub(有四个模型,每个大约190MB)。是吗?嗨,我理解你的担心。正如错误所提到的,您试图加载太多的资源,或者您有很多文件。请你分享一下完整的错误,看看是否是由于我之前所说的?如果是这样的话,你需要打开一张谷歌云平台支持票,要求增加你的appengine Flexible配额,但首先,正如我所说的,请分享完整的错误?
parent
--model
--savemodels
fun_model.h5
glamorous_model.h5
healthy_model.h5
rugged_model.h5
--static
style.css
--templates
index.html
predict.html
--utils
image_preprocessing.py
instagram_scraper.py
label_encoding.py
overall_class_label.py
app.yaml
main.py
requirements.txt