python代码怎么变成软件_从Python代码到APP,你只需要一个小工具:GitHub已超6000星

点击上方Python知识圈,选择设为星标

回复1024获取Python资料

1235013d399b209809b68765b8a1d40f.webp用 300 行 Python 代码,编程一个可实时执行神经网络推断的语义搜索引擎。

以我的经验,每一个不平凡的机器学习项目都是用错误百出、难以维护的内部工具整合而成的。这些工具通常用 Jupyter Notebooks 和 Flask app 写成,很难部署,需要对客户端服务器架构(C/S 架构)进行推理,且无法与 Tensorflow GPU 会话等机器学习组件进行很好的整合。

我第一次看到此类工具是在卡内基梅隆大学,之后又在伯克利、Google X、Zoox 看到。这些工具最初只是小的 Jupyter notebook:传感器校准工具、仿真对比 app、激光雷达对齐 app、场景重现工具等。

当一个工具越来越重要时,项目经理会介入其中:进程和需求不断增加。这些单独的项目变成代码脚本,并逐渐发展成为冗长的「维护噩梦」……

fcd70d856233e8b3ab145b36257fd7ba.webp工具团队构建 app 的流程(干净整洁,从零开始)。

这简直太棒了!但是所有这些工具都需要新功能,比如每周上线新功能。然而工具团队可能同时支持 10 多个项目,他们会说:「我们会在两个月内更新您的工具。」

我们返回之前自行构建工具的流程:部署 Flask app,写 HTML、CSS 和 JavaScript,尝试对从 notebook 到样式表的所有一些进行版本控制。我和在 Google X 工作的朋友 Thiago Teixeira 开始思考:如果构建工具像写 Python 脚本一样简单呢/p>

我们希望在没有工具团队的情况下,机器学习工程师也能构建不错的 app。这些内部工具应该像机器学习工作流程的副产品那样自然而然地出现。写此类工具感觉就像训练神经网络或者在 Jupyter 中执行点对点分析(ad-hoc analysis)!同时,我们还想保留强大 app 框架的灵活性。我们想创造出令工程师骄傲的好工具。

我们希望的 app 构建流程如下:

7f5a58468238c2a2178e00aa950c0933.webp2. 把 widget 视作变量

Streamlit 中没有 callback!每一次交互都只是自上而下重新运行脚本。该方法使得代码非常干净:import streamlit as stx = st.slider(‘x’)st.write(x, ‘squared is’, x * x)

59017104623d0458d37c29fe74d9e831.webp使用 st.cache,在 Streamlit 多次运行中保存数据。代码运行说明,参见:https://gist.github.com/treuille/c633dc8bc86efaa98eb8abe76478aa81#gistcomment-3041475。

92c0f4f05a86688e1a9ea918b8baef4a.webp用户事件触发 Streamlit 从头开始重新运行脚本。不同运行中仅保留缓存。

感兴趣的话,你可以立刻尝试!只需运行以下行:

网页浏览器将自动打开,并转向本地 Streamlit app。如果没有出现浏览器窗口,只需点击链接。

4bd3e233acda2436c7b5a35f4d50c88e.webp这个 300 行代码写成的 Streamlit demo 结合了语义视觉搜索和交互式神经网络推断。

整个 app 只有 300 行 Python 代码,其中大部分是机器学习代码。事实上,整个 app 里只有 23 次 Streamlit 调用。你可以试试看:

8eec88d28e520ce5893f5f9089f3dbd2.webp我用 Streamlit 构建 app 时喜欢用 VSCode 编辑器(左)和 Chrome(右)。

纯 Python 代码可与 Git 等源码控制软件无缝对接,包括 commits、pull requests、issues 和 comment。由于 Streamlit 的底层语言是 Python,因此你可以免费利用这些协作工具的好处。

d3ca858a8053aa0589eb5a3b325ba7aa.webp点击「Always rerun」,保证实时编程。

缓存简化计算流程。一连串缓存函数自动创建出高效的计算流程!你可以尝试以下代码:

a9c2fe71f7691b1d8b65b9dd6669b29f.webp为了保证 app 的可执行性,Streamlit 仅计算更新 UI 所必需的部分。

Streamlit 适用于 GPU。Streamlit 可以直接访问机器级原语(如 TensorFlow、PyTorch),并对这些库进行补充。例如,以下 demo 中,Streamlit 的缓存存储了整个英伟达 PGGAN。该方法可使用户在更新左侧滑块时,app 执行近乎即时的推断。

9aa112ed355bee2b0ed457a92f42a713.webp渐进地使用 Streamlit 的几种方式。

以上只是 Streamlit 功能的冰山一角而已。它最令人兴奋的一点是,这些原语可以轻松组成复杂 app,但看起来却只是简单脚本。这就要涉及架构运作原理和功能了,本文暂不谈及。

053a3bfafec3009ee7dac323638d8184.webp

f847c9b356a5feb00745c02e98c86048.webp

扫码添加,备注:交流学习往期推荐01

分享给你的朋友

点个在看

f162a133f5d3f77b0ba54345033c8085.webp

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览209287 人正在系统学习中 相关资源:fouro-application:iOSAndroid应用程序,用于发送虚拟拥抱并与朋友…

来源:weixin_39540704

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月20日
下一篇 2020年10月20日

相关推荐