We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BiVAECF fails to run on quick start examples
BiVAECF
Below is the basic test case added w.r.t. to the error:
import unittest from cornac.data import Dataset, Reader from cornac.models import BiVAECF class TestRecommender(unittest.TestCase): def setUp(self): self.data = Reader().read("./tests/data.txt") def test_run(self): bivae = BiVAECF(k=1, seed=123) dataset = Dataset.from_uir(self.data) # Assert runs without error bivae.fit(dataset)
Caution
Error:
> i_batch = i_batch.A E AttributeError: 'csc_matrix' object has no attribute 'A'
============================= test session starts ============================== platform linux -- Python 3.11.9, pytest-8.3.2, pluggy-1.5.0 -- /home/dvquys/miniconda3/envs/cornac/bin/python3 cachedir: .pytest_cache rootdir: /home/dvquys/frostmourne/oss/cornac configfile: pytest.ini plugins: xdist-3.6.1, cov-5.0.0, pep8-1.0.6, typeguard-4.3.0 collecting ... collected 1 item tests/cornac/models/bivae/test_recommender.py::TestRecommender::test_run FAILED [100%] =================================== FAILURES =================================== ___________________________ TestRecommender.test_run ___________________________ self = <test_recommender.TestRecommender testMethod=test_run> def test_run(self): bivae = BiVAECF(k=1, seed=123) dataset = Dataset.from_uir(self.data) # Assert runs without error > bivae.fit(dataset) tests/cornac/models/bivae/test_recommender.py:15: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ cornac/models/bivaecf/recom_bivaecf.py:178: in fit learn( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bivae = BiVAE( (act_fn): Tanh() (user_encoder): Sequential( (fc0): Linear(in_features=10, out_features=20, bias=True) ...u): Linear(in_features=20, out_features=1, bias=True) (item_std): Linear(in_features=20, out_features=1, bias=True) ) train_set = <cornac.data.dataset.Dataset object at 0x7e31a29a4dd0> n_epochs = 100, batch_size = 100, learn_rate = 0.001, beta_kl = 1.0 verbose = False, device = device(type='cuda', index=0), dtype = torch.float32 def learn( bivae, train_set, n_epochs, batch_size, learn_rate, beta_kl, verbose, device=torch.device("cpu"), dtype=torch.float32, ): user_params = it.chain( bivae.user_encoder.parameters(), bivae.user_mu.parameters(), bivae.user_std.parameters(), ) item_params = it.chain( bivae.item_encoder.parameters(), bivae.item_mu.parameters(), bivae.item_std.parameters(), ) if bivae.cap_priors.get("user", False): user_params = it.chain(user_params, bivae.user_prior_encoder.parameters()) user_features = train_set.user_feature.features[: train_set.num_users] if bivae.cap_priors.get("item", False): item_params = it.chain(item_params, bivae.item_prior_encoder.parameters()) item_features = train_set.item_feature.features[: train_set.num_items] u_optimizer = torch.optim.Adam(params=user_params, lr=learn_rate) i_optimizer = torch.optim.Adam(params=item_params, lr=learn_rate) x = train_set.matrix.copy() x.data = np.ones_like(x.data) # Binarize data tx = x.transpose() progress_bar = trange(1, n_epochs + 1, disable=not verbose) for _ in progress_bar: # item side i_sum_loss = 0.0 i_count = 0 for i_ids in train_set.item_iter(batch_size, shuffle=False): i_batch = tx[i_ids, :] > i_batch = i_batch.A E AttributeError: 'csc_matrix' object has no attribute 'A' cornac/models/bivaecf/bivae.py:201: AttributeError ============================= slowest 20 durations ============================= 1.57s call tests/cornac/models/bivae/test_recommender.py::TestRecommender::test_run (2 durations < 0.005s hidden. Use -vv to show these durations.) =========================== short test summary info ============================ FAILED tests/cornac/models/bivae/test_recommender.py::TestRecommender::test_run ============================== 1 failed in 2.09s ===============================
Ubuntu 24.04, cornac==2.2.1
cornac==2.2.1
Run the cornac quick start examples with BiVAECF added to the list of models:
import cornac from cornac.eval_methods import RatioSplit from cornac.models import MF, PMF, BPR, BiVAECF from cornac.metrics import MAE, RMSE, Precision, Recall, NDCG, AUC, MAP # load the built-in MovieLens 100K and split the data based on ratio ml_100k = cornac.datasets.movielens.load_feedback() rs = RatioSplit(data=ml_100k, test_size=0.2, rating_threshold=4.0, seed=123) # initialize models, here we are comparing: Biased MF, PMF, and BPR mf = MF(k=10, max_iter=25, learning_rate=0.01, lambda_reg=0.02, use_bias=True, seed=123) pmf = PMF(k=10, max_iter=100, learning_rate=0.001, lambda_reg=0.001, seed=123) bpr = BPR(k=10, max_iter=200, learning_rate=0.001, lambda_reg=0.01, seed=123) bivae = BiVAECF(k=10) models = [mf, pmf, bpr, bivae] # define metrics to evaluate the models metrics = [MAE(), RMSE(), Precision(k=10), Recall(k=10), NDCG(k=10), AUC(), MAP()] # put it together in an experiment, voilà! cornac.Experiment(eval_method=rs, models=models, metrics=metrics, user_based=True).run()
The experiment should run successfully and output the results
The text was updated successfully, but these errors were encountered:
PreferredAI#641 Fix BiVAECF expected dense matrix
cd6184f
Successfully merging a pull request may close this issue.
Description
BiVAECF
fails to run on quick start examplesCode
Below is the basic test case added w.r.t. to the error:
Caution
Error:
Detailed error logs
In which platform does it happen?
Ubuntu 24.04,
cornac==2.2.1
How do we replicate the issue?
Run the cornac quick start examples with BiVAECF added to the list of models:
Expected behavior
The experiment should run successfully and output the results
The text was updated successfully, but these errors were encountered: