利用乘法層(forward+backward)算法結合計算圖(CG)求解反向求導應用題
實作購買2個蘋果
輸出結果

CG思路
實作代碼
apple = 100
apple_num = 2
tax = 1.1
apple_price = mul_apple_layer.forward(apple, apple_num)
price = mul_tax_layer.forward(apple_price, tax)
dprice = 1
dapple_price, dtax = mul_tax_layer.backward(dprice)
dapple, dapple_num = mul_apple_layer.backward(dapple_price)
print('僅使用乘法層:購買2個蘋果和消費稅的例子')
print("price:", int(price))
print("dApple:", dapple)
print("dApple_num:", int(dapple_num))
print("dTax:", dtax)
利用加法層(forward+backward)算法結合計算圖(CG)求解反向求導應用題
實作購買2個蘋果和3個橘子的例子
orange = 150
orange_num = 3
apple_price = mul_apple_layer.forward(apple, apple_num) # (1)
orange_price = mul_orange_layer.forward(orange, orange_num) # (2)
all_price = add_apple_orange_layer.forward(apple_price, orange_price) # (3)
price = mul_tax_layer.forward(all_price, tax) # (4)
dall_price, dtax = mul_tax_layer.backward(dprice) # (4)
dapple_price, dorange_price = add_apple_orange_layer.backward(dall_price) # (3)
dorange, dorange_num = mul_orange_layer.backward(dorange_price) # (2)
dapple, dapple_num = mul_apple_layer.backward(dapple_price) # (1)
print('混合使用加法層和乘法層,實作購買2個蘋果和3個橘子的例子')
print("dOrange:", dorange)
print("dOrange_num:", int(dorange_num))