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

歡迎訪問 生活随笔!

生活随笔

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

python

骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋)

發布時間:2024/9/15 python 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉自機器之心?作者:Adrien Treuille機器之心編譯參與:魔王、一鳴 機器學習開發者想要打造一款 App 有多難?事實上,你只需要會 Python 代碼就可以了,剩下的工作都可以交給一個工具。近日,Streamlit 聯合創始人 Adrien Treuille 撰文介紹其開發的機器學習工具開發框架——Streamlit,這是一款專為機器學習工程師創建的免費、開源 app 構建框架。這款工具可以在你寫 Python 代碼的時候,實時更新你的應用。目前,Streamlit 的 GitHub Star 量已經超過 3400,在 medim 上的熱度更是達到了 9000+。 Streamlit 網站:https://streamlit.io/ GitHub地址:https://github.com/streamlit/streamlit/


用 300 行 Python 代碼,編程一個可實時執行神經網絡推斷的語義搜索引擎。


以我的經驗,每一個不平凡的機器學習項目都是用錯誤百出、難以維護的內部工具整合而成的。這些工具通常用 Jupyter Notebooks 和 Flask app 寫成,很難部署,需要對客戶端服務器架構(C/S 架構)進行推理,且無法與 Tensorflow GPU 會話等機器學習組件進行很好的整合。


我第一次看到此類工具是在卡內基梅隆大學,之后又在伯克利、Google X、Zoox 看到。這些工具最初只是小的 Jupyter notebook:傳感器校準工具、仿真對比 app、激光雷達對齊 app、場景重現工具等。


當一個工具越來越重要時,項目經理會介入其中:進程和需求不斷增加。這些單獨的項目變成代碼腳本,并逐漸發展成為冗長的「維護噩夢」……


機器學習工程師創建 app 的流程(ad-hoc)。


而當一個工具非常關鍵時,我們會組建工具團隊。他們熟練地寫 Vue 和 React,在筆記本電腦上貼滿聲明式框架的貼紙。他們的設計流程是這樣式的:


工具團隊構建 app 的流程(干凈整潔,從零開始)。


這簡直太棒了!但是所有這些工具都需要新功能,比如每周上線新功能。然而工具團隊可能同時支持 10 多個項目,他們會說:「我們會在兩個月內更新您的工具。」


我們返回之前自行構建工具的流程:部署 Flask app,寫 HTML、CSS 和 JavaScript,嘗試對從 notebook 到樣式表的所有一些進行版本控制。我和在 Google X 工作的朋友 Thiago Teixeira 開始思考:如果構建工具像寫 Python 腳本一樣簡單呢?


我們希望在沒有工具團隊的情況下,機器學習工程師也能構建不錯的 app。這些內部工具應該像機器學習工作流程的副產品那樣自然而然地出現。寫此類工具感覺就像訓練神經網絡或者在 Jupyter 中執行點對點分析(ad-hoc analysis)!同時,我們還想保留強大 app 框架的靈活性。我們想創造出令工程師驕傲的好工具。


我們希望的 app 構建流程如下:


Streamlit app 構建流程。


與來自 Uber、Twitter、Stitch Fix、Dropbox 等的工程師一道,我們用一年時間創造了 Streamlit,這是一個針對機器學習工程師的免費開源 app 框架。不管對于任何原型,Streamlit 的核心原則都是更簡單、更純粹。


Streamlit 的核心原則如下:


1. 擁抱 Python


Streamlit app 是完全自上而下運行的腳本,沒有隱藏狀態。你可以利用函數調用來處理代碼。只要你會寫 Python 腳本,你就可以寫 Streamlit app。例如,你可以按照以下代碼對屏幕執行寫入操作:
import?streamlit?as?stst.write('Hello,?world!')

2. 把 widget 視作變量


Streamlit 中沒有 callback!每一次交互都只是自上而下重新運行腳本。該方法使得代碼非常干凈:
import?streamlit?as?stx?=?st.slider('x')
st.write(x,?'squared?is',?x?*?x)
3 行代碼寫成的 Streamlit 交互 app。


3. 重用數據和計算


如果要下載大量數據或執行復雜計算,怎么辦?關鍵在于在多次運行中安全地重用信息。Streamlit 引入了 cache primitive,它像一個持續的默認不可更改的數據存儲器,保障 Streamlit app 輕松安全地重用信息。例如,以下代碼只從 Udacity 自動駕駛項目(https://github.com/udacity/self-driving-car)中下載一次數據,就可得到一個簡單快速的 app:
使用 st.cache,在 Streamlit 多次運行中保存數據。代碼運行說明,參見:https://gist.github.com/treuille/c633dc8bc86efaa98eb8abe76478aa81#gistcomment-3041475。


運行以上 st.cache 示例的輸出。


簡而言之,Streamlit 的工作流程如下:


  • 每次用戶交互均需要從頭運行全部腳本。

  • Streamlit 根據 widget 狀態為每個變量分配最新值。

  • 緩存保證 Streamlit 重用數據和計算。


  • 如下圖所示:


    用戶事件觸發 Streamlit 從頭開始重新運行腳本。不同運行中僅保留緩存。


    感興趣的話,你可以立刻嘗試!只需運行以下行:


    網頁瀏覽器將自動打開,并轉向本地 Streamlit app。如果沒有出現瀏覽器窗口,只需點擊鏈接。


    這些想法很簡潔,但有效,使用 Streamlit 不會妨礙你創建豐富有用的 app。我在 Zoox 和 Google X 工作時,看著自動駕駛汽車項目發展成為數 G 的視覺數據,這些數據需要搜索和理解,包括在圖像數據上運行模型進而對比性能。我看到的每一個自動駕駛汽車項目都有整支團隊在做這方面的工具。


    在 Streamlit 中構建此類工具非常簡單。以下 Streamlit demo 可以對整個 Udacity 自動駕駛汽車照片數據集執行語義搜索,對人類標注的真值標簽進行可視化,并在 app 內實時運行完整的神經網絡(YOLO)。


    這個 300 行代碼寫成的 Streamlit demo 結合了語義視覺搜索和交互式神經網絡推斷。


    整個 app 只有 300 行 Python 代碼,其中大部分是機器學習代碼。事實上,整個 app 里只有 23 次 Streamlit 調用。你可以試試看:


    我們與機器學習團隊合作,為他們的項目而努力時,逐漸意識到這些簡單的想法會帶來大量重要的收益:


    Streamlit app 是純 Python 文件。你可以使用自己喜歡的編輯器和 debugger。


    我用 Streamlit 構建 app 時喜歡用 VSCode 編輯器(左)和 Chrome(右)。


    純 Python 代碼可與 Git 等源碼控制軟件無縫對接,包括 commits、pull requests、issues 和 comment。由于 Streamlit 的底層語言是 Python,因此你可以免費利用這些協作工具的好處。


    Streamlit app 是 Python 腳本,因此你可以使用 Git 輕松執行版本控制。


    Streamlit 提供即時模式的編程環境。當 Streamlit 檢測出源文件變更時,只需點擊 Always rerun 即可。


    點擊「Always rerun」,保證實時編程。


    緩存簡化計算流程。一連串緩存函數自動創建出高效的計算流程!你可以嘗試以下代碼:


    Streamlit 中的簡單計算流程。運行以上代碼,參見說明:https://gist.github.com/treuille/ac7755eb37c63a78fac7dfef89f3517e#gistcomment-3041436。


    基本上,該流程涉及加載元數據到創建摘要等步驟(load_metadata → create_summary)。該腳本每次運行時,Streamlit 僅需重新計算該流程的子集即可。


    為了保證 app 的可執行性,Streamlit 僅計算更新 UI 所必需的部分。


    Streamlit 適用于 GPU。Streamlit 可以直接訪問機器級原語(如 TensorFlow、PyTorch),并對這些庫進行補充。例如,以下 demo 中,Streamlit 的緩存存儲了整個英偉達 PGGAN。該方法可使用戶在更新左側滑塊時,app 執行近乎即時的推斷。


    該 Streamlit app 使用 TL-GAN 展示了英偉達 PGGAN 的效果。


    Streamlit 是免費開源庫,而非私有 web app。你可以本地部署 Streamlit app,不用提前聯系我們。你甚至可以在不聯網的情況下在筆記本電腦上本地運行 Streamlit。此外,現有項目也可以漸進地使用 Streamlit。


    漸進地使用 Streamlit 的幾種方式。


    以上只是 Streamlit 功能的冰山一角而已。它最令人興奮的一點是,這些原語可以輕松組成復雜 app,但看起來卻只是簡單腳本。這就要涉及架構運作原理和功能了,本文暫不談及。


    Streamlit 組件圖示。


    我們很高興與社區分享 Streamlit,希望它能夠幫助大家輕松將 Python 腳本轉化為美觀實用的機器學習 app。


    原文鏈接:https://towardsdatascience.com/coding-ml-tools-like-you-code-ml-models-ddba3357eace


    參考文獻:


    [1] J. Redmon and A. Farhadi, YOLOv3: An Incremental Improvement (2018), arXiv. [2] T. Karras, T. Aila, S. Laine, and J. Lehtinen, Progressive Growing of GANs for Improved Quality, Stability, and Variation (2018), ICLR. [3] S. Guan, Controlled image synthesis and editing using a novel TL-GAN model (2018), Insight Data Science Blog. -END-

    彩蛋在這里!

    圖靈教育出版社上新了一本新書——《Python函數式編程》,本書通過Python詮釋函數式編程的核心思想,詳細介紹如何利用函數式編程的優點,編寫代碼簡潔明了且易于維護的高性能Python程序,充分釋放Python潛力。
    第一時間來送一波福利,留言區分享你自己做過或者看到過的用 Python 進行的騷操作。小詹會在留言區選擇 2 個走心留言送出 2 本Python函數式編程》

    來和小伙伴們一起向上生長呀!

    掃描下方二維碼,添加小詹微信,可領取千元大禮包并申請加入 Python 學習交流群,群內僅供學術交流,日常互動,如果是想發推文、廣告、砍價小程序的敬請繞道!一定記得備注「交流學習」,我會盡快通過好友申請哦!


    👆長按識別,添加微信

    (添加人數較多,請耐心等待)


    👆長按識別,關注小詹

    (掃碼回復 1024 領取程序員大禮包)


    推薦閱讀:(點擊標題即可跳轉)

    總結

    以上是生活随笔為你收集整理的骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋)的全部內容,希望文章能夠幫你解決所遇到的問題。

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