问题描述
我正在尝试实现SDNE,该算法使用深度自动编码器将图形映射到潜在表示形式d
的维度。
这个想法很简单,SDNE使用邻接矩阵作为输入和输出的嵌入层(也就是图的节点嵌入)。
当我在PyTorch中实现代码时,尽管损失函数不是负值,但我却得到了负损失值。
这是我的代码:
def _compute_loss(self,x,x_hat,y,L):
def loss_1st(Y,L):
Y_ = torch.matmul(torch.transpose(Y,1),L)
return 2 * torch.trace(torch.matmul(Y_,Y))
def loss_2nd(X_hat,X,beta):
B = torch.ones_like(X).to(device)
B[X != 0] = beta
return torch.sum(torch.square((X_hat - X) * B))
batch_size = x.shape[0]
# Todo: check if divide batch_size
loss_1 = loss_1st(y,L)
loss_2 = loss_2nd(x_hat,self.beta)
loss = loss_2 + self.alpha * loss_1
return loss
使用x
,x_hat
,y
,L
是2D阵列炬管张量。
我对所有批次数据集进行了训练,这意味着batch_size = len(Adjancency_matrix) = len(A)
。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)