Как устранить ошибку времени выполнения «Только протоколы, созданные явно пользователем (графические листья), поддерживают протокол Deepcopy в данный момент» - PullRequest
1 голос
/ 14 июня 2019

Я хочу использовать выходные переменные NN в качестве входных данных в другой функции, но столкнулся с ошибкой, подобной этой: «Только тензоры, созданные явно пользователем (графические листья), поддерживают протокол Deepcopy в данный момент». Для переменных из переменных требуется градиент,

Я попытался изменить выходные переменные на значения numpy, но в этом случае обратное распространение не работает, поскольку он рассматривает значения numpy как переменные, которым не нужен градиент.

output = model(SOC[13])

# Three output values of NN
Rs=output[0]
R1=output[1]
C1=output[2]

# Using these variables in another function

num1=[Rs*R1*C1,R1+Rs]
den1=[C1*R1,1]
G = control.tf(num,den)

Этодолжно работать, но выдает ошибку.

     14             num=[Rs*R1*C1,R1+Rs]
     15             den=[C1*R1,1]
---> 16             G = control.tf(num,den)
~\Anaconda3\lib\site-packages\control\xferfcn.py in __init__(self, *args)
    106 
    107         """
--> 108         args = deepcopy(args)
    109         if len(args) == 2:
    110             # The user provided a numerator and a denominator.
~\Anaconda3\lib\site-packages\torch\tensor.py in __deepcopy__(self, memo)
     16     def __deepcopy__(self, memo):
     17         if not self.is_leaf:
---> 18             raise RuntimeError("Only Tensors created explicitly by the user "
     19                                "(graph leaves) support the deepcopy protocol at the moment")
     20         if id(self) in memo:
...