#csv #numpy #data #opencl #cuda

RayBNN_DataLoader

读取 CSV、numpy 和二进制文件到 Rust 的 f16、f32、f64、u8、u16、u32、u64、i8、i16、i32、i64 向量

7 个版本 (3 个稳定版)

2.0.3 2024年6月18日
2.0.2 2024年6月5日
0.1.3 2023年10月5日
0.1.2 2023年9月5日

#64科学

Download history • Rust 包仓库 8/week @ 2024-04-28 • Rust 包仓库 4/week @ 2024-05-05 • Rust 包仓库 12/week @ 2024-05-12 • Rust 包仓库 19/week @ 2024-05-19 • Rust 包仓库 9/week @ 2024-05-26 • Rust 包仓库 281/week @ 2024-06-02 • Rust 包仓库 24/week @ 2024-06-09 • Rust 包仓库 164/week @ 2024-06-16 • Rust 包仓库 19/week @ 2024-06-23 • Rust 包仓库 2/week @ 2024-06-30 • Rust 包仓库 19/week @ 2024-07-07 • Rust 包仓库 1/week @ 2024-07-14 • Rust 包仓库 9/week @ 2024-07-28 • Rust 包仓库 4/week @ 2024-08-04 • Rust 包仓库 2/week @ 2024-08-11 • Rust 包仓库

每月480 次下载
用于 6 crates

GPL-3.0-only

105KB
322

RayBNN_DataLoader

RayBNN 的数据加载器

读取 CSV、numpy 和二进制文件到 Rust 的 f16、f32、f64、u8、u16、u32、u64、i8、i16、i32、i64 向量

读取 CSV、numpy 和二进制文件到 Arrayfire GPU 数组 f16、f32、f64、u8、u16、u32、u64、i8、i16、i32、i64

安装 Arrayfire

https://arrayfire.com/binaries/ 安装 Arrayfire 3.9.0 二进制文件

或从源码构建 https://github.com/arrayfire/arrayfire/wiki/Getting-ArrayFire

添加到 Cargo.toml

arrayfire = { version = "3.8.1", package = "arrayfire_fork" }
rayon = "1.10.0"
num = "0.4.3"
num-traits = "0.2.19"
half = { version = "2.4.1" , features = ["num-traits"] }
npyz = "0.8.3"
RayBNN_DataLoader = "2.0.3"

示例列表

读取 CSV 文件到 64 位浮点 CPU 向量

向量完全平坦

let (mut cpu_vector,metadata) = RayBNN_DataLoader::Dataset::CSV::file_to_vec_cpu::<f64>(
    "./test_data/read_test.dat"
);

读取 CSV 文件到 64 位整型 CPU 向量

向量完全平坦

let (mut cpu_vector,metadata) = RayBNN_DataLoader::Dataset::CSV::file_to_vec_cpu::<i64>(
    "./test_data/read_test2.dat"
);

读取 CSV 文件到 64 位浮点 Arrayfire

数组存在于 GPU 或 OpenCL 中

let read_test = RayBNN_DataLoader::Dataset::CSV::file_to_arrayfire::<f64>(
    "./test_data/read_test.dat"
);

读取 CSV 文件到 64 位浮点 HashMap

let hashdata = RayBNN_DataLoader::Dataset::CSV::file_to_hash_cpu::<f64>(
    "./test_data/dataloader.csv",
    7,
    5
);

使用 Arrayfire 读取 CSV 文件到 64 位浮点 HashMap

let arr_dims = arrayfire::Dim4::new(&[5, 7, 1, 1]);
let (hashdata,metadata) = RayBNN_DataLoader::Dataset::CSV::file_to_hash_arrayfire::<f64>(
    "./test_data/dataloader.csv",
    arr_dims,
);

将 32 位浮点 CPU 向量写入 CSV 文件

let mut metadata: HashMap<String,u64> = HashMap::new();

metadata.insert("dim0", 11);
metadata.insert("dim1", 3);

RayBNN_DataLoader::Dataset::CSV::write_vec_cpu_to_csv::<f32>(
    "./randvec2.csv",
    &randvec,
    &metadata
);

将 64 位浮点 Arrayfire 写入 CSV 文件

RayBNN_DataLoader::Dataset::CSV::write_arrayfire_to_csv::<f64>(
    "./randvec.csv",
    &arr
);

读取 YAML 模型信息

let mut modeldata_string:  HashMap<String, String> = HashMap::new();
let mut modeldata_float:  HashMap<String, f64> = HashMap::new();
let mut modeldata_int:  HashMap<String, u64> = HashMap::new();

RayBNN_DataLoader::Model::YAML::read(
    "./test_data/test.yaml",

    &mut modeldata_string,
    &mut modeldata_float,
    &mut modeldata_int,
);

写入 YAML 模型信息

RayBNN_DataLoader::Model::YAML::write(
    "./sample.yaml",

    &modeldata_string,
    &modeldata_float,
    &modeldata_int,
);

依赖项

~7MB
~139K SLoC