TorchSharp is a .NET library that provides access to the library that powers PyTorch. It is a work in progress, but already provides a .NET API that can be used to perform various operations on Tensors.
Our current focus is to bind the entire C API surfaced by libtorch.
Things that you can try:
using TorchSharp;
var x = new FloatTensor (100); // 1D-tensor with 100 elements
FloatTensor result = new FloatTensor (100);
FloatTensor.Add (x, 23, result);
Console.WriteLine (x [12]);
We have a chat room here:
https://gitter.im/xamarin/TorchSharp
Currently I am binding the Tensor APIs, opportunities to bind other APIs are wide open.
To run this, you will need libtorch and its dependencies (on Mac that includes libc10) installed in a location that your dynamic linker can get to.
The following was tested on Ubuntu 18.04 on the Windows Subsytem for Linux.
- Install the .NET Core SDK.
- Install libtorch, and make it available to the dynamic linker.
- Run
dotnet run
in theTester
subfolder.