A tensor library for Rust
Go to file
Julius Koskela d54179cd5d
Work on tensor contraction and axis iteration
Signed-off-by: Julius Koskela <julius.koskela@unikie.com>
2023-12-29 01:47:18 +02:00
examples Work on tensor contraction and axis iteration 2023-12-29 01:47:18 +02:00
src Work on tensor contraction and axis iteration 2023-12-29 01:47:18 +02:00
.gitignore 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
Cargo.lock Work on tensor contraction and axis iteration 2023-12-29 01:47:18 +02:00
Cargo.toml Work on tensor contraction and axis iteration 2023-12-29 01:47:18 +02:00
LICENSE 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
README.md 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
rust-toolchain.toml 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00
rustfmt.toml 🚀 WIP implementation of N-rank Tensor 2023-12-26 01:47:13 +02:00

Tensorc

// Create two tensors with different ranks and shapes
let mut tensor1 = Tensor::<i32, 2>::from([2, 2]); // 2x2 tensor
let mut tensor2 = Tensor::<i32, 1>::from([2]);    // 2-element vector

// Fill tensors with some values
tensor1.buffer_mut().copy_from_slice(&[1, 2, 3, 4]);
tensor2.buffer_mut().copy_from_slice(&[5, 6]);

// Calculate tensor product
let product = tensor1.tensor_product(&tensor2);

println!("T1 * T2 = {}", product);

// Check shape of the resulting tensor
assert_eq!(product.shape(), Shape::new([2, 2, 2]));

// Check buffer of the resulting tensor
assert_eq!(product.buffer(), &[5, 6, 10, 12, 15, 18, 20, 24]);