rotta_rs 0.0.5

a Deep Learning library with rust language
Documentation
mod embedding;
pub use embedding::*;

use rand::distr::Uniform;
use rand_distr::Distribution;

use crate::{ Module, Tensor };

impl Module {
    pub fn embedding_init(&mut self, vocab_num: usize, hidden: usize) -> Embedding {
        let mut list = Vec::with_capacity(vocab_num);
        let uniform = Uniform::new(
            -(1.0 / (hidden as f64)).sqrt(),
            (1.0 / (hidden as f64)).sqrt()
        ).unwrap();

        let mut parameters = self.parameters.lock().unwrap();
        for _ in 0..vocab_num {
            let tensor = Tensor::from_shape_fn(vec![1, hidden], || uniform.sample(&mut self.rng));
            parameters.push(tensor.node.clone());
            list.push(tensor);
        }

        Embedding {
            num_vocab: vocab_num,
            hidden: hidden,
            embedding_list: list,
        }
    }
}