动态图二次求导问题:linear 不支持二次求导
Created by: zylustc
paddle: [1.8.4] 问题是接着之前1.8.3版本出现的bug, #25703 二次求导中不能出现python的控制流说是在1.8.4里修复,可是我更新了1.8.4发现动态图下linear 不支持二次求导了? 测试程序
import paddle.fluid as fluid
import numpy as np
with fluid.dygraph.guard():
value = np.arange(10).reshape(2, 5).astype("float32")
out1 = np.zeros((2,3),dtype=np.float32)
out=fluid.dygraph.to_variable(out1)
a = fluid.dygraph.to_variable(value)
a.stop_gradient=False
linear=fluid.dygraph.Linear(5, 3)
out = linear(a)
print(out)
dx=fluid.dygraph.grad(outputs=out,inputs=a,create_graph=True,retain_graph=True, \
only_inputs=True,allow_unused=False)[0]
print(dx.numpy())
dx.backward()
print(a.gradient())
报错信息 Traceback (most recent call last): File "37.py", line 15, in only_inputs=True,allow_unused=False)[0] File "</share/group-soft/anaconda/install/lib/python3.7/site-packages/decorator.py:decorator-gen-29>", line 2, in grad File "/share/group-soft/anaconda/install/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in impl return wrapped_func(*args, **kwargs) File "/share/group-soft/anaconda/install/lib/python3.7/site-packages/paddle/fluid/framework.py", line 216, in impl return func(*args, **kwargs) File "/share/group-soft/anaconda/install/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 563, in grad create_graph, retain_graph, allow_unused, only_inputs) paddle.fluid.core_avx.EnforceNotMet:
C++ Call Stacks (More useful to developers):
0 std::string paddle::platform::GetTraceBackString<std::string const&>(std::string const&, char const*, int) 1 paddle::platform::EnforceNotMet::EnforceNotMet(std::string const&, char const*, int) 2 paddle::imperative::PartialGradTask::RunEachOp(paddle::imperative::OpBase*) 3 paddle::imperative::PartialGradTask::Run() 4 paddle::imperative::PartialGradEngine::Execute()
Error Message Summary:
NotFoundError: The Op matmul_grad doesn't have any grad op. If you don't intend calculating higher order derivatives, please set create_graph
to False.
[Hint: double_grad_node should not be null.] at (/paddle/paddle/fluid/imperative/partial_grad_engine.cc:894)