天天看点

最近看了Light-GCN的项目,记录了一些里面用到的api

dataframe.iloc是按位置进行选择数据,所以参数是整型

list中extend和append的差别:

append会添加a这个整体

extend会把a中的各个元素分开,a的内容被不再是一个整体

csr_matrix三个参数,第一个是数据,第二个是行和列的坐标,第三个参数是矩阵形状

tensor.coalesce():对边索引进行排序并移除冗余项

scipy.sparse.dok_matrix(n,m):生成(n, m)shape的矩阵,这是一种基于稀疏矩阵的键字典

torch.rand()平均分布

torch.randn是正态分布

torch.sparse.FloatTensor是构建稀疏张良,index和values是一一对应的关系,最后一个参数是size

spmatrix.tocoo(self, copy=False):将此矩阵转换为坐标格式,得到(data, (row, col))

row指行

col指列

torch.stack():沿着一个新维度对输入张量序列进行连接。序列中所有的张量都应该为相同形状。(eg:把多个2维张量凑成一个3维张量;多个3维张量凑成一个4维张量,就是增加新的维度进行堆叠)

eg:

a = np.array([[0, 2, 3], [0, 0, 0], [0, 0, 9]])
b = np.array([[1, 1, 1], [1, 2, 3], [5, 6, 7]])
print("a:", a)
print("b:", b)
a = torch.Tensor(a)
b = torch.Tensor(b)
c = torch.stack([a, b], dim=1)
print(c)
c = torch.mean(c, dim=1)
print(c)

a: [[0 2 3]
 [0 0 0]
 [0 0 9]]
b: [[1 1 1]
 [1 2 3]
 [5 6 7]]
tensor([[[0., 2., 3.],
         [1., 1., 1.]],

        [[0., 0., 0.],
         [1., 2., 3.]],

        [[0., 0., 9.],
         [5., 6., 7.]]])
tensor([[0.5000, 1.5000, 2.0000],
        [0.5000, 1.0000, 1.5000],
        [2.5000, 3.0000, 8.0000]])

           

torch.sparse.FloatTensor(index, data, shape):创建类型为FloatTensor的稀疏张量,index是行列索引,data是对应位置上的数据。

matrix.tolil():将矩阵转换成list(列表)的形式

numpy.unique():查找数组的唯一元素(去重)并排序

torch.nn.init.uniform_():均匀分布

torch.nn.init.normal_():正态分布

torch.nn.init.constant_():常数、固定值

torch.nn.init.eye_():对角线为1,其他为0

torch.nn.init.sparse_():稀疏矩阵,非零元素采用正太分布

np.isinf():判断是否有正负无穷

sp.diags():转换为对角矩阵

torch.split():将张量分割成块,每个块都是原始张量的一个视图。

>>> a = torch.arange(10).reshape(5,2)
>>> a
tensor([[0, 1],
[2, 3],
[4, 5],
[6, 7],
[8, 9]])
>>> torch.split(a, 2)
(tensor([[0, 1],
[2, 3]]),
tensor([[4, 5],
[6, 7]]),
tensor([[8, 9]]))
>>> torch.split(a, [1,4])
(tensor([[0, 1]]),
tensor([[2, 3],
[4, 5],
[6, 7],
[8, 9]]))
           

torch.mean():返回输入张量中所有元素的平均值,可以选维度,

eg;

>>> a = torch.randn(1, 3)
>>> a
tensor([[ 0.2294, -0.5481,  1.3288]])
>>> torch.mean(a)
tensor(0.3367)