bias, activation_function 의 유무 조건문에 따른 Dense 층의 연산을 다르게 수정했는데,
Node 클래스를 구현함으로써 부모 노드, 자식 노드 탐색이 가능 이를 이용하여 다시 조건문을 줄이고,
self.node_list 의 값을 반드시 실행해야 하는 mul_mat_node_list 값으로 지정해주었다!
x, mul_mat_node_list = operations_matrix.matrix_multiply(inputs, self.weights)
self.node_list = mul_mat_node_list
# bias 가 None 이 아닌 경우 - 아직
# 이거 수정해야 함 루트 노드와 리프 노드를 연결해야 함,
# 이전에는 루트 노드끼리 연결되어 있었음
if self.bias is not None:
x, add_node_list = operations_matrix.matrix_add(x, np.tile(self.bias, x.shape))
for i in range(len(add_node_list)):
child_node = self.backpropagate(add_node_list[i])
root_node = self.find_root(mul_mat_node_list[i])
child_node[0].add_child(root_node)
root_node.add_parent(child_node[0])
if self.activation is not None:
x, act_node_list = self.activation(x)
for i in range(len(act_node_list)):
child_node = self.backpropagate(act_node_list[i])
root_node = self.find_root(mul_mat_node_list[i])
child_node[0].add_child(root_node)
root_node.add_parent(child_node[0])
x = x.reshape(n, 1,-1)
return x
Dense 클래스 call 연산 부분의 수정
'dev_AI_framework' 카테고리의 다른 글
backpropagate 메서드 확인 (0) | 2024.09.12 |
---|---|
Dense 클래스 set root_node 메서드 구현 (0) | 2024.09.11 |
leaf_node 방문, 그 구조 생각 (6) | 2024.09.11 |
자동미분을 통한 역전파 연산 시작해보자잇~~ (loss 부터) (0) | 2024.09.10 |
layer 별 node 연결을 어떻게 해줘야 할 지, 개별 레이어에서 처리를 한다면 연결을 안해줘도... (1) | 2024.09.09 |