RuntimeWarning: divide by zero encountered in power d_inv_sqrt = np.power(rowsum, -0.5).flatten()
时间: 2023-12-03 20:45:39 浏览: 280
这个警告是因为有些行的元素和为0,导致在计算倒数平方根时出现了除以0的情况。你可以在代码中加入判断,避免除以0的情况发生,例如:
```python
rowsum = np.sum(adj_matrix, axis=1)
rowsum[rowsum == 0] = 1 # 避免除以0的情况
d_inv_sqrt = np.power(rowsum, -0.5).flatten()
```
这样就可以避免出现警告了。
相关问题
loss = criterion(output[train_mask].float(), drug_graph_label[train_mask].float())报错RuntimeWarning: divide by zero encountered in power d_inv_sqrt = np.power(rowsum, -0.5).flatten()
这个报错可能是因为 `rowsum` 中有 0 值导致的,而在进行 `-0.5` 次方的运算时,会遇到除以 0 的情况,从而报出该错误。
你可以检查一下 `rowsum` 是否包含 0 值,如果有,可以将它们替换成一个非零值,比如 1e-6,以避免出现除以 0 的情况。也可以在计算 `d_inv_sqrt` 时,使用 `np.where` 函数来避免出现除以 0 的情况,示例如下:
```python
eps = 1e-6
d_inv_sqrt = np.where(rowsum > eps, np.power(rowsum, -0.5), 0)
```
这样,当 `rowsum` 小于等于 `eps` 时,`d_inv_sqrt` 将被赋值为 0,避免了除以 0 的情况。
阅读全文