Доброго времени суток!
Я создал csv файл и хотел прочитать его содержимое .
1,0,0,0,0,0
2,0,0,0,0,0
Для этого я создал структуру MNIST
pub struct MNIST {
pub labels:Vec<u8>,
pub num_img:Vec<u8>
}
Читаю файл этим методом
pub fn read(&mut self, path:&str) {
let mut file = File::open(path).expect("err from ...");
let mut reader = BufReader::new(file);
let mut buf:Vec<u8> = Vec::new();
let ra:u8 = 44; // 44 это запятая )))
// читать строку. затем первый элемент закинуть в labels остальное в num
while reader.read_until(b'\n',&mut buf).expect("err from ...") != 0 {
self.labels.push(buf[0]);
for (i,v) in buf.iter().enumerate(){
// если элемент не первый и не является запятой
if i >0 && *v != ra {self.num_img.push(*v)}
}
buf.clear();
}
}
Затем я меняю тип на f32 , но что то идет не так
pub fn get_labels(&self,out_lbl:usize,min:f32,tr:f32) -> Vec<Vec<f32>>{
let mut labels:Vec<Vec<f32>> = Vec::new();
let mut buf:Vec<f32> = Vec::new();
// Заполняем labels
for v in &self.labels {
for j in 0..out_lbl {
if *v as usize == j { buf.push(tr)} else {buf.push(*v as f32) }
}
labels.push(buf.clone());
buf.clear();
}
labels
}
и я получаю вот это
вместо 1 - 49,
2- 50,
0 - 48,
вместо запятой - 44