美文网首页
两个矩阵按行做内积

两个矩阵按行做内积

作者: heishanlaoniu | 来源:发表于2021-05-25 21:27 被阅读0次

比如想让两个n×m的矩阵 每行互相算向量内积得到一个n×1的数组,然后求和
比如同一行的是一对邻居节点 想最大化其embedding内积,就先把两个矩阵分别扩充为n×1×m和n×m×1
然后调torch.bmm 就得到n×1×1的张量 再squeeze


node_emb = self.node_embeddings[i](Variable(nodes_idx)).view(len(batch_indices), -1).unsqueeze(2)
# variable 默认的require grad需要求导为False
# 所以这里只是为了能在cuda上进行计算 将nodes_idx转变为一个tensor 但是不需要对其求导
neighs_idx = torch.LongTensor(neigh_idx_nets[i][batch_indices]).to(self.device)
neigh_emb = self.neigh_embeddings[i](Variable(neighs_idx)).unsqueeze(2).view(len(batch_indices), -1,
                                                                            self.embedding_dim)
# self.neigh_embeddings[i](Variable(neighs_idx))这部分是把对应索引的embedding取出来 是一个二维张量
# 增加一个维度 变成(len(batch_indices), self.embedding_dim,1)
# reshape--view成(len(batch_indices), -1,self.embedding_dim)
# !!!这是一种常见的乘法!!!!
# 比如想让两个n×m的矩阵 每行互相算向量内积然后求和 同一行的是一对邻居节点 想最大化其表征内积
# 就先把两个矩阵分别扩充为n×1×m和n×m×1
# 然后调torch.bmm 就得到n×1×1的张量 再squeeze
loss_positive = nn.functional.logsigmoid(torch.bmm(neigh_emb, node_emb)).squeeze().mean()

相关文章

  • 两个矩阵按行做内积

    比如想让两个n×m的矩阵 每行互相算向量内积得到一个n×1的数组,然后求和比如同一行的是一对邻居节点 想最大化其e...

  • DL01-4:感知器实现(向量版)

    1.使用numpy做内积运算2.使用向量或者矩阵内积实现感知器 一、向量与矩阵的内积计算 1、向量作为矩阵的注意点...

  • 线代部分知识点回顾

    区分矩阵之间的乘积和内积 乘积指的是矩阵乘法的那种 内积只是x1y1+x2y2的那种 矩阵求逆可以用用增广矩阵求逆...

  • np.c_和np.r_的用法解析

    np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。(原来为两个2行3列,行加起来,列数不变,则变为...

  • MIT-18.06-线性代数(第三讲)

    第三讲 —— 矩阵乘法和逆 1. 矩阵乘法 1.1 行列内积 假设矩阵乘矩阵,得到矩阵,。回顾单个元素的求法,取特...

  • 内积矩阵与协方差矩阵

    内积矩阵与协方差矩阵是理解PCA的前提,由于公式较多,我将其保存为了pdf,需要的可以从这里下载。

  • numpy线性代数

    np.dot: 内积np.matmul: 数组的矩阵乘积

  • shell作业 + R作业

    Shell作业: R作业: #1.创建两个数据框(矩阵,向量),按行按列两种合并 #2.记录整理 is.datat...

  • R语言作业

    1.创建两个数据框(矩阵,向量),按列按行两种合并 2.is.datatype函数与as.datatype函数 i...

  • 精通数据科学学习笔记:第三章 数学基础

    3.1 矩阵和向量空间 特殊矩阵:单位矩阵、对角矩阵、三角矩阵 向量内积表示向量A在向量B方向上的投影长度。找到一...

网友评论

      本文标题:两个矩阵按行做内积

      本文链接:https://www.haomeiwen.com/subject/rrocsltx.html