在NN中自定义PyTorch线性操作

时间:2018-06-20 15:46:52

标签: python neural-network pytorch

我正在尝试用自己的版本替换神经网络中的线性运算(即 y = wx + b )。通过遵循Extending PyTorch,我创建了自己的线性类,并将前向功能从 F.linear(input,self.weight,self.bias)更改为 customized_linear(input, self.weight,self.bias)

问题在于如何定义此自定义线性函数。我首先尝试分离 input self.weight 张量,然后将它们转换为numpy。在它们上添加一些线性运算后,将结果转换回张量形式。但是,以这种方式损失函数被错误地更新。我的猜测是分离操作打破了所有历史记录(如果我错了,请纠正我)。

然后,我尝试不使用numpy而直接使用张量。我尝试了一些简单的代码

def customized_linear(input, weight):
    input_row = len(input[:,0])
    weight_row = len(weight[:,0])    
    test = torch.zeros(input_row, weight_row)

    for i in range(0,input_row):
        for j in range(0,weight_row):
            test[i,j] = torch.matmul(input[i,:], weight[j,:])

    test.requires_grad_(True)        
    return test

但是它总是停止工作,并报告内核死了

我应该如何实现定制的线性运算?请帮忙!!

0 个答案:

没有答案