### Fit LSTM Model with Movielens 100K Data Source: https://github.com/maciejkula/sbr-rs/blob/master/readme.md Demonstrates fitting an LSTM recommender model using the sbr library on the Movielens 100K dataset. It covers data loading, splitting, model hyperparameter configuration, training, and evaluation using MRR. Dependencies include sbr, rand, and std::time::Instant. ```rust let mut data = sbr::datasets::download_movielens_100k().unwrap(); let mut rng = rand::XorShiftRng::from_seed([42; 16]); let (train, test) = sbr::data::user_based_split(&mut data, &mut rng, 0.2); let train_mat = train.to_compressed(); let test_mat = test.to_compressed(); println!("Train: {}, test: {}", train.len(), test.len()); let mut model = sbr::models::lstm::Hyperparameters::new(data.num_items(), 32) .embedding_dim(32) .learning_rate(0.16) .l2_penalty(0.0004) .lstm_variant(sbr::models::lstm::LSTMVariant::Normal) .loss(sbr::models::Loss::WARP) .optimizer(sbr::models::Optimizer::Adagrad) .num_epochs(10) .rng(rng) .build(); let start = Instant::now(); let loss = model.fit(&train_mat).unwrap(); let elapsed = start.elapsed(); let train_mrr = sbr::evaluation::mrr_score(&model, &train_mat).unwrap(); let test_mrr = sbr::evaluation::mrr_score(&model, &test_mat).unwrap(); println!( "Train MRR {} at loss {} and test MRR {} (in {:?})", train_mrr, loss, test_mrr, elapsed ); ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.