使用paddle.matmul()函数引发segment fault
收藏
我在搭建神经网络时,在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
收藏
请登录后评论
这个应该是网络搭建有大问题,可以看一下文档,使用情况:https://www.paddlepaddle.org.cn/documentation/docs/zh/api/index_cn.html
也可以去提一个issue