#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日

#62科学

Download history 10/week @ 2024-04-22 10/week @ 2024-04-29 3/week @ 2024-05-06 14/week @ 2024-05-13 18/week @ 2024-05-20 9/week @ 2024-05-27 290/week @ 2024-06-03 17/week @ 2024-06-10 166/week @ 2024-06-17 15/week @ 2024-06-24 20/week @ 2024-07-08 9/week @ 2024-07-29 5/week @ 2024-08-05

每月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

该数组是 2D 的,存在于 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
~138K SLoC