警告
此儲存庫的開發已轉移到 https://github.com/janestreet/torch 。
ocaml-torch為 PyTorch 張量庫提供了一些 ocaml 綁定。這帶來了類似 OCaml NumPy 的張量運算,具有 GPU 加速和基於磁帶的自動微分功能。
這些綁定使用 PyTorch C++ API,而且大部分是自動產生的。目前的 GitHub 技巧和 opam 套件 v0.7 對應於 PyTorch v2.0.0 。
在 Linux 上,請注意,您將需要使用 cxx11 abi cpu 版本、cuda 11.7 版本的 PyTorch 版本。
可使用以下命令安裝 opam 軟體包。這會自動安裝 CPU 版本的 libtorch。
opam 安裝火炬
然後您可以編譯一些範例程式碼,請參閱下面的一些說明。 ocaml-torch也可以透過 utop 或 ocaml-jupyter 在互動模式下使用。
這是一個範例 utop 會話。
若要建置第一個 torch 程序,請建立一個包含以下內容的檔案example.ml
。
打開火炬 () = 讓張量 = Tensor.randn [ 4; 2] 在 張量.列印張量
然後建立一個包含以下內容的dune
檔案:
(執行檔 (名稱範例) (圖書館火炬))
運行dune exec example.exe
來編譯程式並運行它!
或者,您可以先透過dune build example.exe
編譯程式碼,然後執行執行檔_build/default/example.exe
(請注意,建置字節碼目標example.bc
可能無法在 macos 上執行)。
MNIST 教學。
微調 ResNet-18 模型。
生成對抗網路。
運行一些 Python 模型。
來自外部存儲庫的一些更高級的應用程式:
由 Arulselvan Madhavan 設計的 mini-dalle 的 OCaml 連接埠。
實現 stable-diffusion 1.5 的擴散器庫的克隆:Arulselvan Madhavan 的擴散器-ocaml。
基於 BERT 的自然語言處理模型可以在 ocaml-bert 儲存庫中找到。
以下是在 MNIST 資料集上訓練的線性模型的範例(完整程式碼)。
(* 建立兩個張量來儲存模型權重。*) 讓 ws = Tensor.zeros [image_dim; label_count] ~requires_grad:true 中 讓 bs = Tensor.zeros [label_count] ~requires_grad:true 中 令模型 xs = 張量。 for index = 1 to 100 do(* 計算交叉熵損失。*)let loss = Tensor.cross_entropy_for_logits (model train_images) ~targets:train_labelsinTensor.backward loss;(* 應用梯度下降,梯度追蹤。*)張量。 no_grad(fun()-> ws -= grad ws * f 學習率; bs -= grad bs * flearning_rate));(* 計算驗證誤差。*)let test_accuracy = Tensor.(argmax ~dim:(-1) (model test_images) = test_labels) |> Tensor.to_kind ~kind:( T Float ) |> Tensor.sum |> Tensor.float_value |> fun sum -> sum /。 test_samplesinprintf "%d %f %.2f%%n%!"索引(Tensor.float_value損失)(100.*.test_accuracy); 完畢
CIFAR-10 上的一些 ResNet 範例。
char-rnn 的簡化版本,說明使用循環神經網路進行字元級語言建模。
神經風格遷移將影像的風格應用於另一個影像的內容。這使用了一些深度卷積神經網路。
視覺庫中實現了各種預先訓練的電腦視覺模型。權重檔案可以透過以下連結下載:
ResNet-18 權重。
ResNet-34 權重。
ResNet-50 權重。
ResNet-101 權重。
ResNet-152 權重。
DenseNet-121 權重。
DenseNet-161 權重。
DenseNet-169 權重。
SqueezeNet 1.0 權重。
SqueezeNet 1.1 權重。
VGG-13 配重。
VGG-16 配重。
AlexNet 權重。
Inception-v3 權重。
MobileNet-v2 權重。
EfficientNet b0 權重、b1 權重、b2 權重、b3 權重、b4 權重。
透過以下命令可以輕鬆地在一些範例圖像上運行預訓練的模型。
沙丘執行範例/pretrained/predict.exe 路徑/to/resnet18.ot Tiger.jpg
這種安裝ocaml-torch 的替代方法對於在啟用 GPU 加速的情況下運行可能很有用。
libtorch函式庫可以從PyTorch網站下載(2.0.0 cpu版本)。
下載並解壓縮 libtorch 庫,然後建立所有運行的範例:
匯出 LIBTORCH=/path/to/libtorch git 克隆 https://github.com/LaurentMazare/ocaml-torch.gitcd ocaml-torch 使所有