我在自己的网络里加了个自注意力层,但是放到脚本里去训练就报错
Traceback (most recent call last):
File "run.py", line 221, in
trainG.train()
File "run.py", line 188, in train
fake_imgs,_=modelG(noise,c_code)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
return self._dygraph_call_func(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
outputs = self.forward(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/parallel.py", line 704, in forward
outputs = self._layers(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
return self._dygraph_call_func(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
outputs = self.forward(*inputs, **kwargs)
File "/mnt/code_20220228155740/model.py", line 233, in forward
h_code2 = self.h_net2(h_code1, c_code)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
return self._dygraph_call_func(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
outputs = self.forward(*inputs, **kwargs)
File "/mnt/code_20220228155740/model.py", line 182, in forward
out_code=self.att(out_code)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
return self._dygraph_call_func(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
outputs = self.forward(*inputs, **kwargs)
File "/mnt/code_20220228155740/model.py", line 46, in forward
attention_ = self.softmax(s)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
return self._dygraph_call_func(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
outputs = self.forward(*inputs, **kwargs)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/nn/layer/activation.py", line 1171, in forward
return F.softmax(x, self._axis, self._dtype, self._name)
File "/opt/_internal/cpython-3.7.0/lib/python3.7/site-packages/paddle/nn/functional/activation.py", line 913, in softmax
return _C_ops.softmax(outs_cast, 'axis', axis, 'use_cudnn', use_cudnn)
OSError: (External) CUDNN error(9), CUDNN_STATUS_NOT_SUPPORTED.
[Hint: 'CUDNN_STATUS_NOT_SUPPORTED'. The functionality requested is not presently supported by cuDNN. ] (at /paddle/paddle/fluid/platform/cudnn_helper.h:221)
看错误好像是cudnn不支持softmax?
h_net2从这里开始就错了。应该不是不支持,是你网络结构写的有问题。你可以用model.summary先把模型可视化下,看有没有问题