警告
此存储库的开发已转移到 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 = 张量。(mm xs ws + bs) in 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 使所有