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 在 科学
每月480次下载
在 6 个 Crates 中使用
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