각 모델의 출력 유닛의 개수에 따라 비용 함수의 계산 그래프 모양이 바뀜,
출력 유닛들을 연결한 모양으로 출력층의 유닛 개수, n 의 개수에 따라 leaf_node_list 들이 바뀌어야 됌,
그리고 출력층까지의 계산 그래프 모양과의 연결은, 비용 함수의 y_pred 의 값과 연결로 leaf_node_list 엔 y_target 값이 포함되어선 안됨,
# ✅ MSE 계산 그래프
def build_mse_node(num_outputs):
"""
MSE = mean( sum( (y_true_i - y_pred_i)^2 ) )
🔹 계산 그래프 구조 (num_outputs = 3 예시)
[mean]
│
[sum]
/ | \
[square][square][square]
│ │ │
[subtract][subtract][subtract]
/ \ / \ / \
[const][const] ...
(y_true y_pred)
"""
square_nodes = []
for _ in range(num_outputs):
y_true_node = Node("const")
y_pred_node = Node("const")
sub_node = Node("subtract")
sub_node.add_child(y_true_node)
sub_node.add_child(y_pred_node)
square_node = Node("square")
square_node.add_child(sub_node)
square_nodes.append(square_node)
sum_node = Node("sum")
for node in square_nodes:
sum_node.add_child(node)
mean_node = Node("mean")
mean_node.add_child(sum_node)
leaf_nodes = [sq.children[0].children[1] for sq in square_nodes]
return mean_node, leaf_nodes
각 비용 함수의 정해진 형태에 따라, 그 모양이나 형태의 일반화, leaf_node 들의 지정을 수행,
'dev_AI_framework' 카테고리의 다른 글
backpropagate() 각 연산 별 미분 값 ( delta 연산을 위한 입력값의 변화량에 대한 비용 함수 변화량, 가중치 갱신을 위한 가중치 변화량에 대한 비용함수 (0) | 2025.04.30 |
---|---|
계산 그래프의 노드 정보를 어디까지 저장할지 (0) | 2025.04.27 |
비용 함수 값 연산 및 계산 그래프 생성 부분 (0) | 2025.04.25 |
계산 그래프 구성을 위한 반환 값 수정, root_node_list, leaf_node_list (0) | 2025.04.20 |
node 클래스 정비 (0) | 2025.04.11 |