首页 Paddle框架 帖子详情
使用paddle.matmul()函数引发segment fault
收藏
快速回复
Paddle框架 问答模型训练深度学习 471 1
使用paddle.matmul()函数引发segment fault
收藏
快速回复
Paddle框架 问答模型训练深度学习 471 1

我在搭建神经网络时,在layer中的forward函数里使用paddle.matmul()后报错(已确定,代码第19行,第27行的matmul不会报错),初步检查发现有可能是数据类型的问题,但我不知道该如何修改。

具体代码:

def forward(self, x):
        if self.residual:
            y = self.conv_res(x)
            y = self.bn_res(y)

        # x --- N,C,T,V   
        x = self.conv1(x)  # N,3C,T,V
        N, C, T, V = x.shape
        
        
        x = paddle.reshape(x, [N, C // 3, 3, T, V])  # N,C,3,T,V
        x = paddle.transpose(x, perm=[0, 1, 3, 2, 4])  # N,C,T,3,V        # A.shape = (3, 25, 25)
        
        c1 = paddle.reshape(x, [N, 3, C*T//3, V]) # N,3,CT,V
        c2 = paddle.reshape(x, [N, 3, C//3, T, V])# N,3,C,T,V
        c2 = paddle.transpose(c2, perm=[0, 1, 4, 2, 3])# N,3,V,C,T
        c2 = paddle.reshape(c2, [N, 3, V, C//3*T])# N,3,V,CT
        c = paddle.matmul(c2, c1)


        graph = self.A + self.B + c
        print(x.shape, graph.shape)
        x = paddle.reshape(x, (N,C//3,T,3*V))# N,C,T,3V
        graph = graph.reshape((N, 1, 3*V, V))# 3V,T
        x = paddle.matmul(x, graph)
        x = paddle.reshape(x, (N,C//3,T,V))
        
        out = x + y if self.residual else x
        return out

报错信息:(报错后连显存都没释放就中断了)

0
收藏
回复
全部评论(1)
时间顺序
三岁
#2 回复于2021-10

这个应该是网络搭建有大问题,可以看一下文档,使用情况:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/index_cn.html

 

也可以去提一个issue

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户