System.Numerics.Tensors 10.0.0

About

Provides methods for performing mathematical operations over tensors. This library offers both high-level tensor types and low-level primitives for working with multi-dimensional numeric data. Many operations are accelerated to use SIMD (Single instruction, multiple data) operations supported by the CPU where available.

Key Features

  • High-level tensor types: Tensor<T>, TensorSpan<T>, ReadOnlyTensorSpan<T> for working with multi-dimensional arrays
  • Low-level tensor primitives: TensorPrimitives for efficient span-based operations
  • Generic support for various numeric types (float, double, int, etc.)
  • Element-wise arithmetic: Add, Subtract, Multiply, Divide, Exp, Log, Cosh, Tanh, etc.
  • Tensor arithmetic: CosineSimilarity, Distance, Dot, Normalize, Softmax, Sigmoid, etc.
  • SIMD-accelerated operations for improved performance

How to Use

using System.Numerics.Tensors;

var movies = new[] {
    new { Title="The Lion King", Embedding= new [] { 0.10022575f, -0.23998135f } },
    new { Title="Inception", Embedding= new [] { 0.10327095f, 0.2563685f } },
    new { Title="Toy Story", Embedding= new [] { 0.095857024f, -0.201278f } },
    new { Title="Pulp Function", Embedding= new [] { 0.106827796f, 0.21676421f } },
    new { Title="Shrek", Embedding= new [] { 0.09568083f, -0.21177962f } }
};
var queryEmbedding = new[] { 0.12217915f, -0.034832448f };

// Using TensorPrimitives for low-level span operations
var top3MoviesTensorPrimitives =
    movies
        .Select(movie =>
            (
                movie.Title,
                Similarity: TensorPrimitives.CosineSimilarity(queryEmbedding, movie.Embedding)
            ))
        .OrderByDescending(movies => movies.Similarity)
        .Take(3);

foreach (var movie in top3MoviesTensorPrimitives)
{
    Console.WriteLine(movie);
}

// Using higher-level Tensor types for multi-dimensional operations
float[] data1 = [1f, 2f, 3f, 4f, 5f, 6f];
float[] data2 = [6f, 5f, 4f, 3f, 2f, 1f];
Tensor<float> tensor1 = Tensor.Create(data1, [2, 3]); // 2x3 tensor
Tensor<float> tensor2 = Tensor.Create(data2, [2, 3]); // 2x3 tensor
Tensor<float> result = tensor1 + tensor2;

Main Types

The main types provided by this library are:

  • System.Numerics.Tensors.TensorPrimitives - Low-level operations on spans of numeric data
  • System.Numerics.Tensors.Tensor<T> - Generic tensor class for multi-dimensional arrays
  • System.Numerics.Tensors.TensorSpan<T> - Span-like view over tensor data
  • System.Numerics.Tensors.ReadOnlyTensorSpan<T> - Read-only span-like view over tensor data
  • System.Numerics.Tensors.Tensor - Static class with high-level tensor operations

Additional Documentation

Feedback & Contributing

System.Numerics.Tensors is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

No packages depend on System.Numerics.Tensors.

https://go.microsoft.com/fwlink/?LinkID=799421

.NET Framework 4.6.2

.NET 8.0

  • No dependencies.

.NET 9.0

  • No dependencies.

.NET 10.0

  • No dependencies.

.NET Standard 2.0

Version Downloads Last updated
10.0.0 1 2025/11/15
10.0.0-rc.2.25502.107 0 2025/10/14
10.0.0-rc.1.25451.107 0 2025/9/9
10.0.0-preview.7.25380.108 0 2025/8/12
10.0.0-preview.6.25358.103 0 2025/7/15
10.0.0-preview.5.25277.114 0 2025/6/6
10.0.0-preview.4.25258.110 0 2025/5/12
10.0.0-preview.3.25171.5 0 2025/4/10
10.0.0-preview.2.25163.2 1 2025/11/16
10.0.0-preview.1.25080.5 0 2025/2/25
9.0.11 0 2025/11/11
9.0.10 0 2025/10/14
9.0.9 0 2025/9/9
9.0.8 0 2025/8/4
9.0.7 0 2025/7/8
9.0.6 0 2025/6/10
9.0.5 0 2025/5/13
9.0.4 1 2025/11/16
9.0.3 1 2025/11/16
9.0.2 0 2025/2/11
9.0.1 0 2025/1/14
9.0.0 1 2025/11/16
9.0.0-rc.2.24473.5 0 2024/10/8
9.0.0-rc.1.24431.7 0 2024/9/10
9.0.0-preview.7.24405.7 0 2024/8/13
9.0.0-preview.6.24327.7 1 2025/11/16
9.0.0-preview.5.24306.7 0 2024/6/11
9.0.0-preview.4.24266.19 1 2025/11/16
9.0.0-preview.3.24172.9 0 2024/4/11
9.0.0-preview.2.24128.5 0 2024/3/12
9.0.0-preview.1.24080.9 0 2024/2/13
8.0.0 0 2023/11/14
8.0.0-rc.2.23479.6 0 2023/10/10
8.0.0-rc.1.23419.4 0 2023/9/12
8.0.0-preview.7.23375.6 0 2023/8/8
8.0.0-preview.6.23329.7 0 2023/7/11
8.0.0-preview.5.23280.8 0 2023/6/13
8.0.0-preview.4.23259.5 0 2023/5/16
8.0.0-preview.3.23174.8 0 2023/4/11
8.0.0-preview.2.23128.3 1 2025/11/16
8.0.0-preview.1.23110.8 0 2023/2/21
7.0.0-rtm.22518.5 0 2022/11/7
7.0.0-rc.2.22472.3 0 2022/10/11
7.0.0-rc.1.22426.10 0 2022/9/14
7.0.0-preview.7.22375.6 0 2022/8/9
7.0.0-preview.6.22324.4 0 2022/7/12
7.0.0-preview.5.22301.12 0 2022/6/14
7.0.0-preview.4.22229.4 0 2022/5/10
7.0.0-preview.3.22175.4 0 2022/4/13
7.0.0-preview.2.22152.2 0 2022/3/14
7.0.0-preview.1.22076.8 1 2025/11/16
6.0.0-rtm.21522.10 0 2021/11/8
6.0.0-rc.2.21480.5 1 2025/11/16
6.0.0-rc.1.21451.13 0 2021/9/14
6.0.0-preview.7.21377.19 1 2025/11/16
6.0.0-preview.6.21352.12 0 2021/7/14
6.0.0-preview.5.21301.5 0 2021/6/15
6.0.0-preview.4.21253.7 0 2021/5/24
6.0.0-preview.3.21201.4 0 2021/4/8
6.0.0-preview.2.21154.6 1 2025/11/16
6.0.0-preview.1.21102.12 0 2021/2/12
5.0.0-preview.8.20407.11 0 2020/8/25
5.0.0-preview.7.20364.11 0 2020/7/21
5.0.0-preview.6.20305.6 1 2025/11/16
5.0.0-preview.5.20278.1 0 2020/6/10
5.0.0-preview.4.20251.6 0 2020/5/18
5.0.0-preview.3.20214.6 0 2020/4/23
5.0.0-preview.2.20160.6 0 2020/4/2
5.0.0-preview.1.20120.5 0 2020/3/16
0.2.0-preview7.19362.9 0 2019/7/23
0.2.0-preview6.19303.8 0 2019/6/12
0.2.0-preview6.19264.9 0 2019/9/4
0.2.0-preview5.19224.8 0 2019/5/6
0.2.0-preview4.19212.13 0 2019/4/18
0.2.0-preview3.19128.7 0 2019/3/6
0.2.0-preview.19073.11 0 2019/1/29
0.2.0-preview.18571.3 0 2018/12/3
0.1.0 1 2025/11/16