jfkirk / tensorrec

A TensorFlow recommendation algorithm and framework in Python.
Apache License 2.0
1.28k stars 222 forks source link

How to make Tensorrec have stable results #154

Open melaniab opened 4 years ago

melaniab commented 4 years ago

Hello,

I am currently using TensorRec for my master's thesis project, and have been following the MovieLens guide on getting started with the library. I am trying to test different features (embeddings) for content-based recommendations. However, the results that I have so far are not stable, meaning I get different results when I rerun the same piece of code with the same data.

For example, with the same dataset I got first

Recall at 10: Train: 0.0424 Test: 0.0407

and then later:

Recall at 10: Train: 0.0412 Test: 0.0406

How can I make it stable? I did not see anywhere in the code random_seed being set, and I'm not sure where and how can I set it.

The RecSys I use is:

content_model = tensorrec.TensorRec(
    n_components=n_features,
    item_repr_graph=tensorrec.representation_graphs.FeaturePassThroughRepresentationGraph(),
     loss_graph=tensorrec.loss_graphs.WMRBLossGraph()
)
content_model.fit(interactions=sparse_train_ratings_4plus,
                  user_features=user_indicator_features,
                  item_features=books_features,
                 n_sampled_items=int(n_items * .01))

Thank you in advance!

jfkirk commented 4 years ago

Hi @melaniab -- I expect that what your seeing is because of different random seeds, as you suspected.

I haven't tried this, but you could try setting the seed directly to the TensorFlow session before creating the TensorRec object:

tf.set_random_seed(0)
content_model = tensorrec.TensorRec(.......

Let me know if that works for you.

dkolokotronis-artefact commented 3 years ago

Hello I am also trying to solve this issue! I tried tf.random.set_seed(1), but it didn't work. Any suggestions? thank you