Comments (5)
A cleaner approach is to add a small epsilon to the degree to avoid zeros, before taking the reciprocal square root.
Here is one way I provide to fix it:
def _normalize_adj(self, mat):
# Add epsilon to avoid divide by zero
degree = np.array(mat.sum(axis=-1)) + 1e-10
d_inv_sqrt = np.reshape(1.0 / np.sqrt(degree), [-1])
d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0.0
d_inv_sqrt_mat = sp.diags(d_inv_sqrt)
return mat.dot(d_inv_sqrt_mat).transpose().dot(d_inv_sqrt_mat).tocoo()
By adding a small epsilon value, it guarantees there are no zeros in degree, avoiding the divide by zero.
The tiny epsilon doesn't meaningfully change the normalization, but avoids the need to handle inf/NaN values separately.
I hope it will help. By the way, I wanted to mention that I originally intended to submit code to a dev
branch, but noticed that the project only has a master branch. In the future, would you consider adding a dev branch or something similar to facilitate the contributions? Thank you.
from sslrec.
Hi!
Thanks for your interest in SSLRec, and we appreciate your contribution!
Perhaps you could consider submitting a pull request so that we can merge your changes into the project ;)
Best regards,
Xubin
from sslrec.
Of course, I am more than happy to make a contribution. Currently, I have already submitted a pull request #7. If there are any issues with the code, please let me know. Thanks.
from sslrec.
Hi! Thank you for your contribution. It has been merged into the main branch :)
from sslrec.
Thank you for your recognition, good night~
from sslrec.
Related Issues (20)
- 多行为推荐中的 MBSSL(SIGIR2023) 是否在计划中? 🌱 HOT 1
- Gumbel噪声的计算会出现-inf HOT 1
- SimGCL: InfoNCE Loss Calculation Batch vs. Entire Embeddings HOT 2
- 关于评价指标 HOT 2
- 关于多行为推荐中数据集问题 HOT 6
- 如何构建自己的数据集 HOT 2
- Model performance HOT 3
- 关于其他数据集 HOT 2
- pickle加载文件时报错ModuleNotFoundError: No module named 'scipy.sparse._csr',scipy库版本为1.7.3,希望得到作者的解答,万分感谢 HOT 1
- 关于retail_rocket数据集下生成的kg.txt的含义 HOT 2
- 关于lightgcn层数问题 HOT 4
- 训练集测试集的划分
- Can evaluation metrics support AUC-ROC calculations? HOT 1
- cuda版本问题 HOT 1
- 关于SSLRec运行时出现“Cuda Kernel Error”? HOT 4
- 关于构建自己的kg数据集 HOT 2
- 关于模型评测指标数值的问题 HOT 1
- KGIN在SSLRec仓库和KGRec仓库在我的测试下差距过大
- 关于dgl的cuda版本适配问题
- DuoRec小疑问
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sslrec.