#serde #tch

tch-serde

Serialize/Deserialize tch-rs types with serde

12 releases (7 breaking)

0.8.0 Apr 3, 2022
0.7.0 Nov 14, 2021
0.6.0 Jun 26, 2021
0.4.0 Mar 26, 2021
0.1.2 Jul 21, 2020

#897 in Encoding

Download history 5/week @ 2023-06-02 1/week @ 2023-06-09 21/week @ 2023-06-16 5/week @ 2023-06-23 31/week @ 2023-06-30 5/week @ 2023-07-07 3/week @ 2023-07-14 5/week @ 2023-07-21 27/week @ 2023-07-28 4/week @ 2023-08-04 7/week @ 2023-08-11 15/week @ 2023-08-18 15/week @ 2023-08-25 8/week @ 2023-09-01 20/week @ 2023-09-08 17/week @ 2023-09-15

60 downloads per month

MIT license

20KB
421 lines

tch-serde: Serialize/Deserialize tch-rs types with serde

This crate provides {ser,de}ialization methods for tch-rs common types.

docs.rs | crates.io

Usage

For example, annotate #[serde(with = "tch_serde::serde_tensor")] attributes to enable serialization on tensor field.

use tch::{Device, Kind, Tensor};

#[derive(Debug, serde::Serialize, serde::Deserialize)]
struct Example {
    #[serde(with = "tch_serde::serde_tensor")]
    tensor: Tensor,
    #[serde(with = "tch_serde::serde_kind")]
    kind: Kind,
    #[serde(with = "tch_serde::serde_device")]
    device: Device,
    #[serde(with = "tch_serde::serde_reduction")]
    reduction: Reduction,
}

fn main() {
    let example = Example {
        tensor: Tensor::randn(&[2, 3], (Kind::Float, Device::Cuda(0))),
        kind: Kind::Float,
        device: Device::Cpu,
        reduction: Reduction::Mean,
    };
    let text = serde_json::to_string_pretty(&example).unwrap();
    println!("{}", text);
}

License

MIT license. See the LICENSE file.

Dependencies

~7–10MB
~211K SLoC