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)