dev_AI_framework

Dense 클래스 set root_node 메서드 구현

명징직조지훈 2024. 9. 11. 18:31
    def set_root_node(self):
        root_node_list = []
        for node in self.node_list:
            root_node_list.append(self.find_root(node))

        self.node_list = root_node_list

Dense 의 call 연산에서 self.node_list 의 값을 루트 노드로 지정하지 않았음 ( act, bias 의 유무 때문 )

root 노드를 탐색하여 self.node_list 로 지정, 

 

이후 Sequential Class 에서 각 노드를 연결하는 코드 작성 완료

# 레이어 역순으로 방문
        for layer in reversed(self._layers):
            # 학습이 가능한 layer 일 경우 
            if layer.trainable:
                # 각 데이터별 loss_node 의 leaf_node 값
                for i in range(len(leaf_nodes)):
                    # 현재 레이어의 루트 노드 탐색
                    # print(self.find_root(layer.node_list[i]).operation, "개별 데이터의 루트 노드 탐색")
                    # print(leaf_nodes[0][0].operation, "뭘까")
                    # activation 에 해당하는 최상위 노드 operation - reciprocal 
                    # leaf_nodes(loss_node) 의 자식 노드 간의 연결

                    # leaf_nodes[i] 에는 자식 노드 리스트들이 존재
                    for j in range(len(leaf_nodes[i])):

                        child_node_list = self.find_child_node(leaf_nodes[i][j])
                        # 진짜 찐 leaf_node, layer.node_list 와 연결해야
                        for child_node in child_node_list:
                            child_node.add_child(layer.node_list[i])
                            layer.node_list[i].add_parent(child_node)