Peringatan
Pengembangan repo ini telah dipindahkan ke https://github.com/janestreet/torch .
ocaml-torch menyediakan beberapa pengikatan ocaml untuk pustaka tensor PyTorch. Hal ini menghadirkan komputasi tensor mirip OCaml NumPy dengan akselerasi GPU dan diferensiasi otomatis berbasis pita.
Pengikatan ini menggunakan API PyTorch C++ dan sebagian besar dibuat secara otomatis. Tip GitHub saat ini dan paket opam v0.7 sesuai dengan PyTorch v2.0.0 .
Di Linux perhatikan bahwa Anda memerlukan versi PyTorch menggunakan versi cxx11 abi cpu, versi cuda 11.7.
Paket opam dapat diinstal menggunakan perintah berikut. Ini secara otomatis menginstal libtorch versi CPU.
opam pasang obor
Anda kemudian dapat mengkompilasi beberapa kode contoh, lihat beberapa petunjuk di bawah. ocaml-torch juga dapat digunakan dalam mode interaktif melalui utop atau ocaml-jupyter.
Berikut adalah contoh sesi utop.
Untuk membangun program obor pertama, buat file example.ml
dengan konten berikut.
buka Torchlet () = biarkan tensor = Tensor.randn [ 4; 2 ] masuk Tensor.print tensor
Kemudian buat file dune
dengan konten berikut:
(dapat dieksekusi (contoh nama) (obor perpustakaan))
Jalankan dune exec example.exe
untuk mengkompilasi program dan menjalankannya!
Alternatifnya, Anda dapat mengkompilasi kode terlebih dahulu melalui dune build example.exe
lalu menjalankan _build/default/example.exe
yang dapat dieksekusi (perhatikan bahwa membuat target bytecode example.bc
mungkin tidak berfungsi di macOS).
tutorial MNIST.
Menyempurnakan model ResNet-18.
Jaringan Permusuhan Generatif.
Menjalankan beberapa model Python.
Beberapa aplikasi tingkat lanjut dari repo eksternal:
Pelabuhan mini-dalle OCaml oleh Arulselvan Madhavan.
Klon dari pustaka diffuser yang menerapkan difusi stabil 1.5: diffusers-ocaml oleh Arulselvan Madhavan.
Model Pemrosesan Bahasa Alami berdasarkan BERT dapat ditemukan di repo ocaml-bert.
Di bawah ini adalah contoh model linier yang dilatih pada dataset MNIST (kode lengkap).
(* Buat dua tensor untuk menyimpan bobot model. *) biarkan ws = Tensor.zeros [image_dim; label_count] ~requires_grad:benar masuk biarkan bs = Tensor.zeros [label_count] ~requires_grad:true masuk misalkan model xs = Tensor.(mm xs ws + bs) masuk untuk indeks = 1 hingga 100 lakukan(* Hitung kerugian lintas entropi. *)biarkan kerugian = Tensor.cross_entropy_for_logits (model train_images) ~targets:train_labelsinTensor.backward loss;(* Terapkan penurunan gradien, nonaktifkan pelacakan gradien untuk ini. *) Tensor.(no_grad (menyenangkan () -> ws -= lulusan ws * f kecepatan_belajar; bs -= grad bs * f learning_rate));(* Hitung kesalahan validasi. *)let test_accuracy = Tensor.(argmax ~dim:(-1) (model test_images) = test_labels) |> Tensor.to_kind ~kind:( T Float) |> Tensor.sum |> Tensor.float_value |> jumlah menyenangkan -> jumlah /. test_samplesinprintf "%d %f %.2f%%n%!" indeks (Kerugian Tensor.float_value) (100.*.test_accuracy); Selesai
Beberapa contoh ResNet di CIFAR-10.
Versi sederhana dari char-rnn yang mengilustrasikan pemodelan bahasa tingkat karakter menggunakan Recurrent Neural Networks.
Neural Style Transfer menerapkan gaya suatu gambar ke konten gambar lain. Ini menggunakan beberapa Jaringan Neural Konvolusional yang mendalam.
Berbagai model visi komputer terlatih diimplementasikan di perpustakaan visi. File bobot dapat diunduh pada tautan berikut:
Bobot ResNet-18.
Bobot ResNet-34.
Bobot ResNet-50.
Bobot ResNet-101.
Bobot ResNet-152.
Bobot DenseNet-121.
Bobot DenseNet-161.
Bobot DenseNet-169.
beban SqueezeNet 1.0.
beban SqueezeNet 1.1.
Bobot VGG-13.
Bobot VGG-16.
Bobot AlexNet.
Bobot awal-v3.
Bobot MobileNet-v2.
Bobot b0 EfficientNet, bobot b1, bobot b2, bobot b3, bobot b4.
Menjalankan model terlatih pada beberapa contoh gambar dapat dilakukan dengan mudah melalui perintah berikut.
contoh dune exec/pretrained/predict.exe path/to/resnet18.ot Tiger.jpg
Cara alternatif untuk menginstal ocaml-torch ini mungkin berguna untuk dijalankan dengan akselerasi GPU diaktifkan.
Perpustakaan libtorch dapat diunduh dari situs web PyTorch (versi cpu 2.0.0).
Unduh dan ekstrak perpustakaan libtorch lalu untuk membangun semua contoh dijalankan:
ekspor LIBTORCH=/path/ke/libtorch git clone https://github.com/LaurentMazare/ocaml-torch.gitcd ocaml-torch membuat semua