【问题标题】:Tying all values along the diagonal of a matrix in PyTorch在 PyTorch 中沿矩阵的对角线绑定所有值
【发布时间】:2019-06-26 00:41:55
【问题描述】:

我正在实现的模型有一组参数 a1,...,aH,它们对应于对先前输出的加权。它是通过乘以一个如下所示的矩阵来实现的:

a1  0  0  0  0 ...
a2 a1  0  0  0 ...
a3 a2 a1  0  0 ...
 :  :  :  :  :

在当前的实现中,a 保存在具有 H 个条目的一维 nn.parameter.Parameter 中,在每次前向传递期间从该条目构造矩阵。矩阵的梯度通过autograd自动传播到参数。

但是,这需要每次前向传递都重新构造矩阵。有没有办法让矩阵本身作为参数,但将权重沿主对角线和下对角线绑定,这样就相当于从参数向量构造它?

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    你可以从scipy使用dia_matrix

    from scipy.sparse import dia_matrix
    
    a = [1,2,3]
    b = [4,5]
    
    m = dia_matrix([a, b], [0, -1])
    print(m)
    #   (0, 0)  [1, 2, 3]
    #   (0, 1)  [4, 5]
    a[0] = 10
    
    print(m)
    #   (0, 0)  [10, 2, 3]
    #   (0, 1)  [4, 5]
    

    【讨论】:

      猜你喜欢
      • 2013-07-03
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多