Load the dataset for recommenders

(Optional) Prepare numerical user features

The method below is left here for convenience if you want to experiment with content-based user features as an input for your neural network.

(Optional) Prepare numerical item features

The method below is left here for convenience if you want to experiment with content-based item features as an input for your neural network.

Neural network recommender

**Task:**
Code a recommender based on a neural network model. You are free to choose any network architecture you find appropriate. The network can use the interaction vectors for users and items, embeddings of users and items, as well as user and item features (you can use the features you developed in the first project).

Remember to keep control over randomness - in the init method add the seed as a parameter and initialize the random seed generator with that seed (both for numpy and pytorch):

self.seed = seed
self.rng = np.random.RandomState(seed=seed)

in the network model:

self.seed = torch.manual_seed(seed)

You are encouraged to experiment with:

Quick test of the recommender

Tuning method

Tuning of the recommender

**Task:**
Tune your model using the code below. You only need to put the class name of your recommender and choose an appropriate parameter space.

Final evaluation

**Task:**
Run the final evaluation of your recommender and present its results against the Amazon and Netflix recommenders' results. You just need to give the class name of your recommender and its tuned parameters below.

Summary

**Task:**
Write a summary of your experiments. What worked well and what did not? What are your thoughts how could you possibly further improve the model?

What did not work:

What did work well:

How to further improve model: