본문 바로가기

dev_AI_framework

계산 그래프는 한 번만 생성해야 해, 완료~

이전까지의 구현은

fit 메서드에서 매번 데이터 연산 시 계산 그래프를 새로 생성했었는데,

초기 하나의 데이터를 가져와 계산 그래프를 만들고

이후엔 생성된 계산 그래프에 적합한 데이터를 집어 넣어 사용하는 방법으로 해야함...

 

model.fit 에서 첫 반복에서 기존의 call 연산과 함께 기존 layer 에 저장되어 있는 속성 호출 처음 계산 시에는 저장되어 있는 속성은 없으므로 새로운 그래프가 생성됨과 함께 연산을 수행, 

    # fit 을 구현해보자잇~ forward 연산이라고 보면 될 듯
    def fit(self, x=None, y=None, epochs = 1):
        """
        모델의 연산 부분
        
        Parameters:
        x (n, p): p 개의 특성을 가진, n 개의 데이터
          (n, p_1, p_2) : p_1,2, 2차원의 특성을 가진 n 개의 데이터
        y (n, 1): n 개의 타겟값

        """
        # 초기 입력값, layer 입력값의 갱신
        n = x.shape[0]

        # 계산 그래프 만들기
        for i in range(n):
            output = x[i]

            layer_node_list1 = []

            # 첫 데이터를 통해 계산 그래프 생성
            if i == 0:
                 # 전체 데이터를 처리하도록
                for layer in self._layers:
                    # 이전 층의 출력값이 해당 층의 입력값이 되고,
                    # 해당 레이어에 해당하는 계산 노드 리스트가 출력, 
                    
                    output = layer.call(output)

                    # 레이어 연결, 
                    if layer.trainable:
                        # 해당 레이어의 루트 노드
                        layer_node_list2 = layer.node_list
                        
                        # 기존의, list2 아래에 list1 를 연결해야 한다.
                        # 첫 번째 레이어의 경우 list1 자체가 node_list 가 된다.
                        self.node_list = self.link_node(layer_node_list2, layer_node_list1)

                        layer_node_list1 = layer_node_list2 
                    
                # loss, metrics 연산의 수행
                self.compute_loss_and_metrics(output, y[i].reshape(1,-1))
                
                self.node_list = self.link_loss_node(self.loss_node_list, self.node_list)
                
                self.print_relationships(self.node_list[0])


            # 두 번째 데이터 부터
            else: 
                # 전체 데이터를 처리하도록
                for layer in self._layers:
                    # 이전 층의 출력값이 해당 층의 입력값이 되고,
                    # 해당 레이어에 해당하는 계산 노드 리스트가 출력, 
                    output = layer.call(output)
                    
            
            
                # loss, metrics 연산의 수행
                self.compute_loss_and_metrics(output, y[i].reshape(1,-1))   
                
            # 매 반복 연산이 끝난 후 초기화
            self.node_list = []

 

첫 번째 연산 이후 생성된

self.node_list : 각 출력 유닛이 루트 노드, n 개의 계산 그래프가 생성된다.

 

 

def print_relationships(self, node, visited=None, indent=0):
        """
        노드의 관계를 출력하는 함수

        Parameters:
        node: 탐색을 시작할 노드
        visited: 이미 방문한 노드를 추적하기 위한 집합 (기본값은 None)
        indent: 출력 시 들여쓰기 수준 (기본값은 0)
        """
        if visited is None:
            visited = set()

        # 순환 참조 방지
        if node in visited:
            print(' ' * indent + f'(Already visited node: {node.operation})')
            return
        visited.add(node)

        # 현재 노드 정보 출력
        print(' ' * indent + f'Node Operation: {node.operation}')
        print(' ' * indent + f'Inputs: {node.input_a}, {node.input_b}')
        print(' ' * indent + f'Output: {node.output}')
        print(' ' * indent + f'Grad Input: {node.grad_input}')
        print(' ' * indent + f'Grad Weight: {node.grad_weight}')

        # 부모 노드 출력
        parents = node.get_parents()
        if parents:
            print(' ' * indent + 'Parents:')
            for parent in parents:
                self.print_relationships(parent, visited, indent + 4)

        # 자식 노드 출력
        children = node.get_children()
        if children:
            print(' ' * indent + 'Children:')
            for child in children:
                self.print_relationships(child, visited, indent + 4)
        else:
            print(' ' * (indent + 4) + 'Leaf node')
Node Operation: square
Inputs: 0.004093346993654268, 0.0
Output: 1.6755489610458433e-05
Grad Input: 0.0
Grad Weight: 0.0
Children:
    Node Operation: subtract
    Inputs: 0.7763381162903117, 0.7722447692966574
    Output: 0.004093346993654268
    Grad Input: 0.0
    Grad Weight: 0.0
    Parents:
        (Already visited node: square)
        Leaf node
    Node Operation: reciprocal
    Inputs: 1.0, 1.2880985475483855
    Output: 0.7763381162903117
    Grad Input: 0.0
    Grad Weight: 0.0
    Parents:
        (Already visited node: square)
    Children:
        Node Operation: add
        Inputs: 0.2880985475483856, 1.0
        Output: 1.2880985475483855
        Grad Input: 0.0
        Grad Weight: 0.0
        Parents:
            (Already visited node: reciprocal)
        Children:
            Node Operation: exp
            Inputs: -1.2444526783886194, 0.0
            Output: 0.2880985475483856
            Grad Input: 0.0
            Grad Weight: 0.0
            Parents:
                (Already visited node: add)
            Children:
                Node Operation: negate
                Inputs: 1.2444526783886194, 0.0
                Output: -1.2444526783886194
                Grad Input: 0.0
                Grad Weight: 0.0
                Parents:
                    (Already visited node: exp)
                Children:
                    Node Operation: add
                    Inputs: 1.1980022656686218, 0.046450412719997725
                    Output: 1.2444526783886194
                    Grad Input: 0.0
                    Grad Weight: 0.0
                    Parents:
                        (Already visited node: negate)
                    Children:
                        Node Operation: add
                        Inputs: 0.0, 0.0
                        Output: 1.1980022656686218
                        Grad Input: 0.0
                        Grad Weight: 0.0
                        Parents:
                            (Already visited node: add)
                        Children:
                            Node Operation: multiply
                            Inputs: 0.7451204239923259, -0.4280460641762345
                            Output: -0.3189458648272422
                            Grad Input: 0.0
                            Grad Weight: 0.0
                            Parents:
                                (Already visited node: add)
                            Children:
                                Node Operation: reciprocal
                                Inputs: 1.0, 1.3420649438677836
                                Output: 0.7451204239923259
                                Grad Input: 0.0
                                Grad Weight: 0.0
                                Parents:
                                    (Already visited node: multiply)
                                    Node Operation: multiply
                                    Inputs: 0.7451204239923259, -0.7424068371191724
                                    Output: -0.5531824972490395
                                    Grad Input: 0.0
                                    Grad Weight: 0.0
                                    Parents:
                                        Node Operation: add
                                        Inputs: 0.0, 0.0
                                        Output: -0.4771334151648797
                                        Grad Input: 0.0
                                        Grad Weight: 0.0
                                        Parents:
                                            Node Operation: add
                                            Inputs: -0.4771334151648797, 0.046450412719997725
                                            Output: -0.430683002444882
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                Node Operation: negate
                                                Inputs: -0.430683002444882, 0.0
                                                Output: 0.430683002444882
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: exp
                                                    Inputs: 0.430683002444882, 0.0
                                                    Output: 1.538307832836354
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        Node Operation: add
                                                        Inputs: 1.538307832836354, 1.0
                                                        Output: 2.538307832836354
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            Node Operation: reciprocal
                                                            Inputs: 1.0, 2.538307832836354
                                                            Output: 0.39396324869020344
                                                            Grad Input: 0.0
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                Node Operation: square
                                                                Inputs: 0.19524756715603103, 0.0
                                                                Output: 0.03812161248034885
                                                                Grad Input: 0.0
                                                                Grad Weight: 0.0
                                                                Children:
                                                                    Node Operation: subtract
                                                                    Inputs: 0.39396324869020344, 0.1987156815341724
                                                                    Output: 0.19524756715603103
                                                                    Grad Input: 0.0
                                                                    Grad Weight: 0.0
                                                                    Parents:
                                                                        (Already visited node: square)
                                                                        Leaf node
                                                                    (Already visited node: reciprocal)
                                                            Children:
                                                                (Already visited node: add)
                                                        Children:
                                                            (Already visited node: exp)
                                                    Children:
                                                        (Already visited node: negate)
                                                Children:
                                                    (Already visited node: add)
                                            Children:
                                                (Already visited node: add)
                                        Children:
                                            (Already visited node: multiply)
                                            Node Operation: multiply
                                            Inputs: 0.21546977971011916, -2.1396206560762394
                                            Output: -0.46102359142796795
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: add)
                                            Children:
                                                Node Operation: reciprocal
                                                Inputs: 1.0, 4.641022055832346
                                                Output: 0.21546977971011916
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: multiply
                                                    Inputs: 0.21546977971011916, -0.7033438017074073
                                                    Output: -0.1515493340143728
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        (Already visited node: reciprocal)
                                                    (Already visited node: multiply)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 3.6410220558323467, 1.0
                                                    Output: 4.641022055832346
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: reciprocal)
                                                    Children:
                                                        Node Operation: exp
                                                        Inputs: 1.2922644268053656, 0.0
                                                        Output: 3.6410220558323467
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                        Children:
                                                            Node Operation: negate
                                                            Inputs: -1.2922644268053656, 0.0
                                                            Output: 1.2922644268053656
                                                            Grad Input: 0.0
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                (Already visited node: exp)
                                                            Children:
                                                                Node Operation: add
                                                                Inputs: -1.904117321527745, 0.6118528947223795
                                                                Output: -1.2922644268053656
                                                                Grad Input: 0.0
                                                                Grad Weight: 0.0
                                                                Parents:
                                                                    (Already visited node: negate)
                                                                Children:
                                                                    Node Operation: add
                                                                    Inputs: 0.0, 0.0
                                                                    Output: -1.904117321527745
                                                                    Grad Input: 0.0
                                                                    Grad Weight: 0.0
                                                                    Parents:
                                                                        (Already visited node: add)
                                                                    Children:
                                                                        Node Operation: multiply
                                                                        Inputs: 0.6075448519014384, -0.13826430117118466
                                                                        Output: -0.08400176437830326
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.17052412368729153, -0.23413695694918055
                                                                        Output: -0.039925999406568116
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.06505159298527952, 0.5425600435859647
                                                                        Output: 0.03529439512542969
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.9488855372533332, -1.913280244657798
                                                                        Output: -1.8154839528683033
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                            Node Operation: multiply
                                            Inputs: 0.4031760099104639, 0.5977204669126083
                                            Output: 0.24098655289164483
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: add)
                                            Children:
                                                Node Operation: reciprocal
                                                Inputs: 1.0, 2.48030630647413
                                                Output: 0.4031760099104639
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: multiply
                                                    Inputs: 0.4031760099104639, -0.6294749609242508
                                                    Output: -0.2537892030839846
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        (Already visited node: reciprocal)
                                                    (Already visited node: multiply)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 1.48030630647413, 1.0
                                                    Output: 2.48030630647413
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: reciprocal)
                                                    Children:
                                                        Node Operation: exp
                                                        Inputs: 0.39224903019583557, 0.0
                                                        Output: 1.48030630647413
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                        Children:
                                                            Node Operation: negate
                                                            Inputs: -0.39224903019583557, 0.0
                                                            Output: 0.39224903019583557
                                                            Grad Input: 0.0
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                (Already visited node: exp)
                                                            Children:
                                                                Node Operation: add
                                                                Inputs: -1.004101924918215, 0.6118528947223795
                                                                Output: -0.39224903019583557
                                                                Grad Input: 0.0
                                                                Grad Weight: 0.0
                                                                Parents:
                                                                    (Already visited node: negate)
                                                                Children:
                                                                    Node Operation: add
                                                                    Inputs: 0.0, 0.0
                                                                    Output: -1.004101924918215
                                                                    Grad Input: 0.0
                                                                    Grad Weight: 0.0
                                                                    Parents:
                                                                        (Already visited node: add)
                                                                    Children:
                                                                        Node Operation: multiply
                                                                        Inputs: 0.6075448519014384, 0.6476885381006925
                                                                        Output: 0.3934998369586443
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.17052412368729153, 1.5792128155073915
                                                                        Output: 0.26929388148013833
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.06505159298527952, -0.46341769281246226
                                                                        Output: -0.030146059135013586
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.9488855372533332, -1.7249178325130328
                                                                        Output: -1.6367495842219841
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                            Node Operation: multiply
                                            Inputs: 0.7510434291090605, 0.3942330218796011
                                            Output: 0.2960861206204829
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: add)
                                            Children:
                                                Node Operation: reciprocal
                                                Inputs: 1.0, 1.3314809253923823
                                                Output: 0.7510434291090605
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: multiply
                                                    Inputs: 0.7510434291090605, 2.5594880310377928
                                                    Output: 1.9222866675942214
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        (Already visited node: reciprocal)
                                                    (Already visited node: multiply)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 0.33148092539238216, 1.0
                                                    Output: 1.3314809253923823
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: reciprocal)
                                                    Children:
                                                        Node Operation: exp
                                                        Inputs: -1.1041850113061993, 0.0
                                                        Output: 0.33148092539238216
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                        Children:
                                                            Node Operation: negate
                                                            Inputs: 1.1041850113061993, 0.0
                                                            Output: -1.1041850113061993
                                                            Grad Input: 0.0
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                (Already visited node: exp)
                                                            Children:
                                                                Node Operation: add
                                                                Inputs: 0.4923321165838197, 0.6118528947223795
                                                                Output: 1.1041850113061993
                                                                Grad Input: 0.0
                                                                Grad Weight: 0.0
                                                                Parents:
                                                                    (Already visited node: negate)
                                                                Children:
                                                                    Node Operation: add
                                                                    Inputs: 0.0, 0.0
                                                                    Output: 0.4923321165838197
                                                                    Grad Input: 0.0
                                                                    Grad Weight: 0.0
                                                                    Parents:
                                                                        (Already visited node: add)
                                                                    Children:
                                                                        Node Operation: multiply
                                                                        Inputs: 0.6075448519014384, 1.5230298564080254
                                                                        Output: 0.9253089485528827
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.17052412368729153, 0.7674347291529088
                                                                        Output: 0.1308661346759937
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.06505159298527952, -0.46572975357025687
                                                                        Output: -0.03029646237038688
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.9488855372533332, -0.5622875292409727
                                                                        Output: -0.5335465042746697
                                                                        Grad Input: 0.0
                                                                        Grad Weight: 0.0
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                    Children:
                                        (Already visited node: reciprocal)
                                Children:
                                    Node Operation: add
                                    Inputs: 0.34206494386778374, 1.0
                                    Output: 1.3420649438677836
                                    Grad Input: 0.0
                                    Grad Weight: 0.0
                                    Parents:
                                        (Already visited node: reciprocal)
                                    Children:
                                        Node Operation: exp
                                        Inputs: -1.0727546655969369, 0.0
                                        Output: 0.34206494386778374
                                        Grad Input: 0.0
                                        Grad Weight: 0.0
                                        Parents:
                                            (Already visited node: add)
                                        Children:
                                            Node Operation: negate
                                            Inputs: 1.0727546655969369, 0.0
                                            Output: -1.0727546655969369
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: exp)
                                            Children:
                                                Node Operation: add
                                                Inputs: 0.4609017708745575, 0.6118528947223795
                                                Output: 1.0727546655969369
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    (Already visited node: negate)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 0.0, 0.0
                                                    Output: 0.4609017708745575
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        Node Operation: multiply
                                                        Inputs: 0.6075448519014384, 0.4967141530112327
                                                        Output: 0.30177612652855773
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                            Leaf node
                                                        Node Operation: multiply
                                                        Inputs: 0.17052412368729153, -0.23415337472333597
                                                        Output: -0.03992879903311886
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                            Leaf node
                                                        Node Operation: multiply
                                                        Inputs: 0.06505159298527952, -0.4694743859349521
                                                        Output: -0.030540056670854538
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                            Leaf node
                                                        Node Operation: multiply
                                                        Inputs: 0.9488855372533332, 0.24196227156603412
                                                        Output: 0.2295945000499732
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                            Leaf node
                            (Already visited node: multiply)
                            (Already visited node: multiply)
                            (Already visited node: multiply)

 

PS C:\Users\owner\Desktop\AI_framework-dev> & C:/Users/owner/AppData/Local/Programs/Python/Python312/python.exe c:/Users/owner/Desktop/AI_framework-dev/tests/my_framework_code/check_back.py
Node Operation: square
Inputs: 0.004093346993654268, 0.0
Output: 1.6755489610458433e-05
Grad Input: 0.008186693987308535
Grad Weight: 0.0
Children:
    Node Operation: subtract
    Inputs: 0.7763381162903117, 0.7722447692966574
    Output: 0.004093346993654268
    Grad Input: 0.008186693987308535
    Grad Weight: -0.008186693987308535
    Parents:
        (Already visited node: square)
        Leaf node
    Node Operation: reciprocal
    Inputs: 1.0, 1.2880985475483855
    Output: 0.7763381162903117
    Grad Input: -0.010545268634275224
    Grad Weight: 0.0
    Parents:
        (Already visited node: square)
    Children:
        Node Operation: add
        Inputs: 0.2880985475483856, 1.0
        Output: 1.2880985475483855
        Grad Input: -0.010545268634275224
        Grad Weight: -0.010545268634275224
        Parents:
            (Already visited node: reciprocal)
        Children:
            Node Operation: exp
            Inputs: -1.2444526783886194, 0.0
            Output: 0.2880985475483856
            Grad Input: -0.00303807657704224
            Grad Weight: 0.0
            Parents:
                (Already visited node: add)
            Children:
                Node Operation: negate
                Inputs: 1.2444526783886194, 0.0
                Output: -1.2444526783886194
                Grad Input: 0.00303807657704224
                Grad Weight: 0.0
                Parents:
                    (Already visited node: exp)
                Children:
                    Node Operation: add
                    Inputs: 1.1980022656686218, 0.046450412719997725
                    Output: 1.2444526783886194
                    Grad Input: 0.00303807657704224
                    Grad Weight: 0.00303807657704224
                    Parents:
                        (Already visited node: negate)
                    Children:
                        Node Operation: add
                        Inputs: 0.0, 0.0
                        Output: 1.1980022656686218
                        Grad Input: 0.00303807657704224
                        Grad Weight: 0.00303807657704224
                        Parents:
                            (Already visited node: add)
                        Children:
                            Node Operation: multiply
                            Inputs: 0.7451204239923259, -0.4280460641762345
                            Output: -0.3189458648272422
                            Grad Input: -0.0013004367214689374
                            Grad Weight: 0.0022637329072068683
                            Parents:
                                (Already visited node: add)
                            Children:
                                Node Operation: reciprocal
                                Inputs: 1.0, 1.3420649438677836
                                Output: 0.7451204239923259
                                Grad Input: 0.0017452705356018141
                                Grad Weight: 0.0
                                Parents:
                                    (Already visited node: multiply)
                                    Node Operation: multiply
                                    Inputs: 0.7451204239923259, -0.7424068371191724
                                    Output: -0.5531824972490395
                                    Grad Input: 0.0
                                    Grad Weight: 0.0
                                    Parents:
                                        Node Operation: add
                                        Inputs: 0.0, 0.0
                                        Output: -0.4771334151648797
                                        Grad Input: 0.0
                                        Grad Weight: 0.0
                                        Parents:
                                            Node Operation: add
                                            Inputs: -0.4771334151648797, 0.046450412719997725
                                            Output: -0.430683002444882
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                Node Operation: negate
                                                Inputs: -0.430683002444882, 0.0
                                                Output: 0.430683002444882
                                                Grad Input: 0.0
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: exp
                                                    Inputs: 0.430683002444882, 0.0
                                                    Output: 1.538307832836354
                                                    Grad Input: 0.0
                                                    Grad Weight: 0.0
                                                    Parents:
                                                        Node Operation: add
                                                        Inputs: 1.538307832836354, 1.0
                                                        Output: 2.538307832836354
                                                        Grad Input: 0.0
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            Node Operation: reciprocal
                                                            Inputs: 1.0, 2.538307832836354
                                                            Output: 0.39396324869020344
                                                            Grad Input: 0.0
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                Node Operation: square
                                                                Inputs: 0.19524756715603103, 0.0
                                                                Output: 0.03812161248034885
                                                                Grad Input: 0.0
                                                                Grad Weight: 0.0
                                                                Children:
                                                                    Node Operation: subtract
                                                                    Inputs: 0.39396324869020344, 0.1987156815341724
                                                                    Output: 0.19524756715603103
                                                                    Grad Input: 0.0
                                                                    Grad Weight: 0.0
                                                                    Parents:
                                                                        (Already visited node: square)
                                                                        Leaf node
                                                                    (Already visited node: reciprocal)
                                                            Children:
                                                                (Already visited node: add)
                                                        Children:
                                                            (Already visited node: exp)
                                                    Children:
                                                        (Already visited node: negate)
                                                Children:
                                                    (Already visited node: add)
                                            Children:
                                                (Already visited node: add)
                                        Children:
                                            (Already visited node: multiply)
                                            Node Operation: multiply
                                            Inputs: 0.21546977971011916, -2.1396206560762394
                                            Output: -0.46102359142796795
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: add)
                                            Children:
                                                Node Operation: reciprocal
                                                Inputs: 1.0, 4.641022055832346
                                                Output: 0.21546977971011916
                                                Grad Input: 0.00991699315073261
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: multiply
                                                    Inputs: 0.21546977971011916, -0.7033438017074073
                                                    Output: -0.1515493340143728
                                                    Grad Input: -0.002136812329575116
                                                    Grad Weight: 0.0006546136907977643
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        (Already visited node: reciprocal)
                                                    (Already visited node: multiply)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 3.6410220558323467, 1.0
                                                    Output: 4.641022055832346
                                                    Grad Input: 0.00991699315073261
                                                    Grad Weight: 0.00991699315073261
                                                    Parents:
                                                        (Already visited node: reciprocal)
                                                    Children:
                                                        Node Operation: exp
                                                        Inputs: 1.2922644268053656, 0.0
                                                        Output: 3.6410220558323467
                                                        Grad Input: 0.03610799078935575
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                        Children:
                                                            Node Operation: negate
                                                            Inputs: -1.2922644268053656, 0.0
                                                            Output: 1.2922644268053656
                                                            Grad Input: -0.03610799078935575
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                (Already visited node: exp)
                                                            Children:
                                                                Node Operation: add
                                                                Inputs: -1.904117321527745, 0.6118528947223795
                                                                Output: -1.2922644268053656
                                                                Grad Input: -0.03610799078935575
                                                                Grad Weight: -0.03610799078935575
                                                                Parents:
                                                                    (Already visited node: negate)
                                                                Children:
                                                                    Node Operation: add
                                                                    Inputs: 0.0, 0.0
                                                                    Output: -1.904117321527745
                                                                    Grad Input: -0.03610799078935575
                                                                    Grad Weight: -0.03610799078935575
                                                                    Parents:
                                                                        (Already visited node: add)
                                                                    Children:
                                                                        Node Operation: multiply
                                                                        Inputs: 0.6075448519014384, -0.13826430117118466
                                                                        Output: -0.08400176437830326
                                                                        Grad Input: 0.004992446113185845
                                                                        Grad Weight: -0.02193722391657764
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.17052412368729153, -0.23413695694918055
                                                                        Output: -0.039925999406568116
                                                                        Grad Input: 0.008454215084968793
                                                                        Grad Weight: -0.006157283487463683
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.06505159298527952, 0.5425600435859647
                                                                        Output: 0.03529439512542969
                                                                        Grad Input: -0.019590753056474463
                                                                        Grad Weight: -0.0023488823203453918
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                                                        Node Operation: multiply
                                                                        Inputs: 0.9488855372533332, -1.913280244657798
                                                                        Output: -1.8154839528683033
                                                                        Grad Input: 0.06908470545156008
                                                                        Grad Weight: -0.03426235023929624
                                                                        Parents:
                                                                            (Already visited node: add)
                                                                            Leaf node
                                            Node Operation: multiply
                                            Inputs: 0.4031760099104639, 0.5977204669126083
                                            Output: 0.24098655289164483
                                            Grad Input: 0.0
                                            Grad Weight: 0.0
                                            Parents:
                                                (Already visited node: add)
                                            Children:
                                                Node Operation: reciprocal
                                                Inputs: 1.0, 2.48030630647413
                                                Output: 0.4031760099104639
                                                Grad Input: 0.004743320752252209
                                                Grad Weight: 0.0
                                                Parents:
                                                    Node Operation: multiply
                                                    Inputs: 0.4031760099104639, -0.6294749609242508
                                                    Output: -0.2537892030839846
                                                    Grad Input: -0.0019123931346185458
                                                    Grad Weight: 0.0012248795921343304
                                                    Parents:
                                                        (Already visited node: add)
                                                    Children:
                                                        (Already visited node: reciprocal)
                                                    (Already visited node: multiply)
                                                Children:
                                                    Node Operation: add
                                                    Inputs: 1.48030630647413, 1.0
                                                    Output: 2.48030630647413
                                                    Grad Input: 0.004743320752252209
                                                    Grad Weight: 0.004743320752252209
                                                    Parents:
                                                        (Already visited node: reciprocal)
                                                    Children:
                                                        Node Operation: exp
                                                        Inputs: 0.39224903019583557, 0.0
                                                        Output: 1.48030630647413
                                                        Grad Input: 0.007021567623188559
                                                        Grad Weight: 0.0
                                                        Parents:
                                                            (Already visited node: add)
                                                        Children:
                                                            Node Operation: negate
                                                            Inputs: -0.39224903019583557, 0.0
                                                            Output: 0.39224903019583557
                                                            Grad Input: -0.007021567623188559
                                                            Grad Weight: 0.0
                                                            Parents:
                                                                (Already visited node: exp)
                                                            Children:
                                                                Node Operation: add
                                                                Inputs: -1.004101924918215, 0.6118528947223795
                                                                Output: -0.39224903019583557
                                                                Grad Input: -0.007021567623188559
                                                                Grad Weight: -0.007021567623188559
                                                                Parents:
                                                                    (Already visited node: negate)
                                                                Children:
                                                                    Node Operation: add
                                                                    Inputs: 0.0, 0.0
                                                                    Output: -1.004101924918215
                                                                    Grad Input: -0.007021567623188559
                                                                    Grad Weight: -0.007021567623188559
                                                

각 연산에 대한 입력값, 가중치의 변화에 대한 변화량이 나와있다.