日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

为什么将表格的method改为post后就无法工作_用Python将Keras深度学习模型部署为Web应用程序...

發布時間:2023/12/10 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么将表格的method改为post后就无法工作_用Python将Keras深度学习模型部署为Web应用程序... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

構建一個很棒的機器學習項目是一回事,但歸根結底,你希望其他人能夠看到你的辛勤工作。當然,你可以將整個項目放在GitHub上,但是怎么讓你的祖父母也看到呢?我們想要的是將深度學習模型部署為世界上任何人都可以訪問的Web應用程序。

在本文中,我們將看到如何編寫一個Web應用程序,該應用程序使用經過訓練的Keras遞歸神經網絡,并允許用戶生成新的專利文摘。這個項目建立在遞歸神經網絡的基礎上,但是了解如何創建RNN是不必要的。

現在我們將其視為黑匣子:我們按一個開始的順序進行操作,它輸出一個全新的專利文摘,可以在瀏覽器中顯示!

傳統上,數據科學家會開發模型,而前端工程師則將模型展示給全世界。在這個項目中,我們必須扮演兩個角色,并投入到Web開發中(盡管幾乎全部使用Python)。

該項目需要將眾多主題結合在一起:

  • Flask:用Python創建一個基本的Web應用程序
  • Keras:部署訓練有素的遞歸神經網絡
  • 使用Jinja模板庫創建模板
  • 用于編寫網頁的HTML和CSS
  • Flask:http://flask.pocoo.org/
  • Keras:http://keras.io/
  • HTML:https://www.w3schools.com/html/
  • CSS:https://www.w3schools.com/html/html_css.asp

最終結果是一個網絡應用程序,該應用程序允許用戶使用經過訓練的循環神經網絡生成全新的專利文摘:

該項目的完整代碼可在GitHub上找到。

  • https://github.com/WillKoehrsen/recurrent-neural-networks

方法

目的是使Web應用程序盡快啟動并運行。為此,我選擇了Flask,它允許我們用Python編寫應用程序。我不喜歡搞亂樣式(這清楚地顯示了),所以幾乎所有的CSS都是復制和粘貼的。

Keras團隊的這篇文章(https://blog.keras.io/building-a-simple-keras-deep-learning-rest-api.html) 對基礎知識很有幫助,本文也是一個有用的指南。

總體而言,該項目遵循我的設計原則:快速啟動并運行原型——根據需要進行復制和粘貼,然后進行迭代以制作出更好的產品。

帶Flask的基本Web應用程序

用Python構建Web應用程序的最快方法是使用Flask。要制作自己的應用程序,我們可以使用以下內容:

from flask import Flaskapp = Flask(__name__)@app.route("/")def hello(): return "

Not Much Going On Here

"app.run(host='0.0.0.0', port=50000)

如果你復制并粘貼此代碼并運行它,則可以在 localhost:50000上查看自己的Web應用程序。當然,我們還想做更多的事情,所以我們將使用稍微復雜一點的功能,該功能基本上可以完成相同的工作:處理來自瀏覽器的請求,并以HTML形式提供一些內容。對于我們的主頁,我們想向用戶顯示一個表單以輸入一些詳細信息。

用戶輸入表

當用戶到達應用程序的主頁時,我們將向他們顯示一個帶有三個參數的表單供你選擇:

  • 輸入RNN的開始序列或隨機選擇
  • 選擇RNN預測的多樣性
  • 選擇RNN輸出的字數
  • 要在Python中構建表單,我們將使用wtforms。創建表單的代碼為:

    • wtforms:https://wtforms.readthedocs.io/
    from wtforms import (Form, TextField, validators, SubmitField, DecimalField, IntegerField)class ReusableForm(Form): """User entry form for entering specifics for generation""" # Starting seed seed = TextField("Enter a seed string or 'random':", validators=[ validators.InputRequired()]) # Diversity of predictions diversity = DecimalField('Enter diversity:', default=0.8, validators=[validators.InputRequired(), validators.NumberRange(min=0.5, max=5.0, message='Diversity must be between 0.5 and 5.')]) # Number of words words = IntegerField('Enter number of words to generate:', default=50, validators=[validators.InputRequired(), validators.NumberRange(min=10, max=100, message='Number of words must be between 10 and 100')]) # Submit button submit = SubmitField("Enter")

    這將創建如下所示的表單(樣式來自main.css):

    該validator代碼確保用戶輸入正確的信息。例如,我們檢查所有框是否都已填寫,且其diversity介于0.5到5之間。必須滿足這些條件才能接受該表格。

    我們Flask實際提供表單的方式是使用模板。

    模板

    模板是一個包含基本框架的文檔,我們需要用它來填充細節。對于Flask Web應用程序,我們可以使用Jinja模板庫將Python代碼傳遞到HTML文檔。例如,在main函數中,我們將把表單的內容發送到一個名為index.html的文件.

    • Jinja模板庫:http://jinja.pocoo.org/
    from flask import render_template# Home page@app.route("/", methods=['GET', 'POST'])def home(): """Home page of app with form""" # Create form form = ReusableForm(request.form) # Send template information to index.html return render_template('index.html', form=form)

    當用戶到達主頁時,我們的應用程序將提供index.html表格上的細節。該模板是一個簡單的html框架,我們在其中使用{{variable}}語法引用python變量。

    RNN Patent Writing

    Writing Novel Patent Abstracts with Recurrent Neural Networks {% block content %} {% for message in form.seed.errors %} {{ message }} {% endfor %} {% for message in form.diversity.errors %} {{ message }} {% endfor %} {% for message in form.words.errors %} {{ message }} {% endfor %} {{ form.seed.label }} {{ form.seed }} {{ form.diversity.label }} {{ form.diversity }} {{ form.words.label }} {{ form.words }} {{ form.submit }} {% endblock %}

    對于表單中的每個錯誤(那些無法驗證的條目),對應的一個錯誤將閃爍。除此之外,此文件將顯示上述表單。

    當用戶輸入信息并點擊submit(POST請求)時,如果信息是正確的,我們希望將輸入轉移到適當的函數,以使用經過訓練的RNN進行預測。這意味著修改home()。

    from flask import request# User defined utility functionsfrom utils import generate_random_start, generate_from_seed# Home page@app.route("/", methods=['GET', 'POST'])def home(): """Home page of app with form""" # Create form form = ReusableForm(request.form) # On form entry and all conditions met if request.method == 'POST' and form.validate(): # Extract information seed = request.form['seed'] diversity = float(request.form['diversity']) words = int(request.form['words']) # Generate a random sequence if seed == 'random': return render_template('random.html', input=generate_random_start(model=model, graph=graph, new_words=words, diversity=diversity)) # Generate starting from a seed sequence else: return render_template('seeded.html', input=generate_from_seed(model=model, graph=graph, seed=seed, new_words=words, diversity=diversity)) # Send template information to index.html return render_template('index.html', form=form)

    現在,當用戶點擊submit并且信息正確時,根據輸入的不同,輸入將被發送到generate_random_start或generate_from_seed。這些函數使用經過訓練的Keras模型生成具有用戶指定的diversity和num_words的新穎專利。這些函數的輸出依次被發送到其中一個模板random.html或者seeded.html作為一個網頁。

    使用預先訓練的Keras模型進行預測

    模型參數是經過訓練的Keras模型,加載如下:

    from keras.models import load_modelimport tensorflow as tfdef load_keras_model(): """Load in the pre-trained model""" global model model = load_model('../models/train-embeddings-rnn.h5') # Required for model to work global graph graph = tf.get_default_graph()load_keras_model()

    tf.get_default_graph()是基于這個要點的一種解決方案。

    我將不展示這兩個util函數的全部內容(這里是代碼),你需要理解的是它們使用經過訓練的Keras模型以及參數,并對新的專利文摘進行預測。

    這些函數都返回帶有格式化HTML的Python字符串。該字符串被發送到另一個模板以呈現為網頁。例如,generate_random_start返回格式為html,返回結果為random.html:

    Random Starting Abstract Home {% block content %} {{input|safe}} {% endblock %}

    這里我們再次使用Jinja模板引擎來顯示格式化的HTML。因為Python字符串已經被格式化為HTML,我們所要做的就是使用{{input| safe}}(其中input是Python變量)來顯示它。然后我們就可以在main.css設計這個頁面的樣式了, 和其他html模板一樣。

    輸出量

    generate_random_start選擇一個隨機的專利文摘作為開始序列,并根據該摘要進行預測。然后顯示開始順序,RNN生成的輸出和實際輸出:

    該函數generate_from_seed采用用戶提供的起始序列,然后使用經過訓練的RNN對其進行構建。輸出如下:

    盡管結果并不總是完全正確,但它們確實表明遞歸神經網絡已經學習了英語的基礎知識。經過訓練,可以預測前50個單詞中的下一個單詞,并掌握了如何撰寫具有說服力的專利文摘!

    根據預測的多樣性,輸出可能是完全隨機的或循環的。

    運行應用

    要自己運行該應用程序,你所需要做的就是下載存儲庫,導航到該deployment目錄并輸入python run_keras_server.py。這將立即使Web應用程序在localhost:10000可用。

    根據家庭WiFi的配置方式,你應該能夠使用IP地址從網絡上的任何計算機訪問該應用程序。

    下一步

    你的個人計算機上運行的Web應用程序非常適合與朋友和家人共享。我絕對不建議你向家庭網絡中的所有人開放此功能!為此,我們想要在AWS EC2實例上設置應用程序并將其提供給全世界(稍后發布)。

    為了改善應用程序,我們可以(通過main.css)更改樣式,并可能添加更多選項,例如選擇經過預先訓練的網絡的功能。關于個人項目的偉大之處在于,你可以根據需要擴展它們。如果你想使用該應用程序,請下載代碼并開始使用。

    • 代碼下載:https://github.com/WillKoehrsen/recurrent-neural-networks

    結論

    在本文中,我們看到了如何將訓練有素的Keras深度學習模型部署為Web應用程序。這需要將多種不同的技術結合在一起,包括遞歸神經網絡,Web應用程序,模板,HTML,CSS,當然還有Python。

    雖然這只是一個基本的應用程序,但它表明你可以開始使用深度學習來構建web應用程序,而不需要花費太多的精力。

    submit = SubmitField("Enter")

    在訓練模型中加載。

    總結

    以上是生活随笔為你收集整理的为什么将表格的method改为post后就无法工作_用Python将Keras深度学习模型部署为Web应用程序...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 激情久久免费视频 | 蜜桃视频在线网站 | 国产又粗又猛又大爽 | 超污视频在线观看 | 国产精品久久毛片av大全日韩 | 不卡中文字幕在线 | 日韩一区三区 | 九七电影院97理论片 | 久久精品av | 国产精彩视频在线观看 | 成人综合区 | 国产精品国产精品国产专区 | 2024男人天堂 | 黄色一级片一级片 | 亚洲一区二区天堂 | 国产三级做爰高清在线 | 日韩区在线观看 | 超碰av男人的天堂 | av毛片观看 | 人善交videos欧美3d动漫 | 亚洲另类在线观看 | 熟女少妇精品一区二区 | 看免费一级片 | 97人人爽人人 | 天堂a√在线 | 免费在线观看黄色网址 | 国产精品av在线免费观看 | 亚洲免费av网 | 99自拍偷拍视频 | 99思思| 国产精品探花一区二区在线观看 | 欧美少妇在线 | 色拍拍视频 | 以女性视角写的高h爽文 | 欧洲av片 | 国模私拍一区二区三区 | 性欧美一区二区三区 | 理论片毛片 | 亚洲女则毛耸耸bbw 边吃奶边添下面好爽 | 中文字幕第12页 | 好吊日在线| 国产欧美日韩视频 | 日本网站在线免费观看 | 精品日韩在线播放 | 黄色av网站免费 | 一区精品视频 | 国产极品一区二区 | 久久女| 成人爽a毛片一区二区免费 日本高清免费看 | 亚洲精品久久久久久久蜜桃 | 国产精品国产三级国产aⅴ 欧美bbbbbbbbbbbb18av | 国产做爰视频免费播放 | 91视频国产一区 | 在线观看一区二区三区视频 | 在线爱情大片免费观看大全 | 国产区一区二 | 成人国产在线视频 | 6080久久 | 伊人称影院| 色婷婷aⅴ一区二区三区 | 高潮毛片无遮挡 | 欧美日韩五月天 | 国产高清中文字幕 | 国产在线97 | 免费黄色在线播放 | 欧美精品免费在线观看 | 极品国产91在线网站 | www色婷婷| 国产精品无码一区 | 超碰资源 | 日韩精品一卡 | 黄色天堂 | a视频免费在线观看 | 伊人久久超碰 | 亚洲一区二区三区免费在线观看 | 黄色成人在线播放 | 欧洲做受高潮欧美裸体艺术 | 少妇久久精品 | 韩日av | 国产偷亚洲偷欧美偷精品 | 永久国产| 国产女人18毛片水18精品 | 免费av影片| 亚洲av无码国产精品久久不卡 | 特黄做受又粗又大又硬老头 | 午夜视频色 | 欧美超逼视频 | 国产成人精品亚洲精品色欲 | 中文字幕乱码免费 | 免费播放毛片精品视频 | 成人欧美一区二区三区在线播放 | 欧美 变态 另类 人妖 | 免费看裸体视频网站 | 男人的天堂狠狠干 | 精品九九 | 美女一区二区三区四区 | 麻豆91精品| 亚洲一区二区三区高清 | 久久综合干 |