이전까지의 구현은
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
각 연산에 대한 입력값, 가중치의 변화에 대한 변화량이 나와있다.
'dev_AI_framework' 카테고리의 다른 글
역전파 연산과 가중치 갱신 (0) | 2024.09.19 |
---|---|
계산 그래프는 한 번만 생성해야 해, 완료~ (0) | 2024.09.19 |
계산 그래프는 한 번만 생성해야 해, 생성 확인~ (0) | 2024.09.13 |
backpropagate 메서드 확인 (0) | 2024.09.12 |
Dense 클래스 set root_node 메서드 구현 (0) | 2024.09.11 |