[英]Ada + Machine Learning (Python Framework)
我正在嘗試用 Ada 編寫一個簡單的機器學習應用程序,還試圖找到一個好的框架來使用。 我對一件事的了解極少,對另一件事的了解也很少。
那里有幾個漂亮的機器學習框架,我想利用一個與 Ada 程序一起使用,但我想我只是……不知所措。 例如,我可以使用一個用 Python 編寫的現有框架並包裝(或者我猜是綁定?)Ada 中的 API 調用嗎? 我應該放棄腳本功能嗎? 我想弄明白。
例證:Scikit(sklearn) https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html#
這做了一些巧妙的事情,我希望能夠利用它,但使用 Ada 程序。 有沒有人有類似經驗的建議?
我只是在研究,所以我嘗試查找信息。
http://www.inspirel.com/articles/Ada_Python_Binding.html https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html#
inspirel解決方案基於python2.7。 如果您使用的是 python3.5 以上版本,則需要制作一些模組
python_模塊.py
#print 'Hello from Python module'
print('Hello from Python module')
#print 'Python adding:', a, '+', b
print('Python adding:', a, '+', b)
ada_main.adb
-- Python.Execute_String("print 'Hello from Python!'");
Python.Execute_String("print('Hello from Python!')");
一些例程已被棄用,因此必須更改鏈接
python.adb
--pragma Import(C, PyInt_AsLong, "PyInt_AsLong");
pragma Import(C, PyInt_AsLong, "PyLong_AsLong");
--pragma Import(C, PyString_FromString, PyString_FromString");
pragma Import(C, PyString_FromString, "PyUnicode_FromString");
現在有趣的是。 在 Linux 上,更改為 python 3.9,您只需更改
--for Default_Switches ("Ada") use ("-lpython2.7");
for Default_Switches ("Ada") use ("-lpython3.7");
但在 windows 上,這些庫不會轉儲到社區庫中。 所有包裹都分開存放。 必須添加 -L 以告訴 linker 在哪里可以找到庫。 就我而言,我進行了 python 的非管理員安裝,所以它看起來像
for Default_Switches ("Ada") use ("-L\Users\StdUser\AppData\Local\Programs\Python\Python37-32\libs", "-lpython37");
使用 gprbuild 而不是 gnatmake -p,后者已被棄用。 如果你正確地做所有的模組
gprbuild ada_main.gpr
應該在 obj\ada_main.exe 中給你一個可執行文件。 運行可執行文件應該給
C:\Users\StdUser\My Documents\ada-python>gprbuild ada_main.gpr
Compile
[Ada] ada_main.adb
Bind
[gprbind] ada_main.bexch
[Ada] ada_main.ali
Link
[link] ada_main.adb
C:\Users\StdUser\My Documents\ada-python>obj\ada_main.exe
executing Python directly from Ada:
Hello from Python!
loading external Python module and calling functions from that module:
Hello from Python module!
asking Python to add two integers:
Python adding: 10 + 2
Ada got result from Python: 12
we can try other operations, too:
subtract: 8
multiply: 20
divide : 5
請記住將 pythonxx.dll 放在路徑的某個位置,否則它將無法在開始執行時找到庫。
可以使用Python編寫的現有機器學習框架,例如scikit-learn,帶有Ada程序。 一種方法是使用 Ada 的外部 function 接口 (FFI) 綁定到 Python API 調用,這樣您就可以從 Ada 程序中調用 Python 函數。 這可以使用 GPRBind 或 SWIG 等庫來完成,它們可以生成必要的綁定。
另一種選擇是使用 Python 腳本執行機器學習任務,並使用命令行或文件將數據傳入和傳出 Ada 程序。 這樣您就可以利用 Python 框架的功能,而不必將其直接集成到您的 Ada 程序中。
值得注意的是,由於 Ada 是一種系統編程語言,它往往更常用於嵌入式系統、實時系統和安全關鍵系統。 它對 ML 來說不太受歡迎。 因此,為 ML 任務找到 Ada 庫或特定於 Ada 的教程可能更具挑戰性。
建議您嘗試與 Python 集成的不同方式,看看哪種方式最適合您的特定用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.