【发布时间】:2021-07-18 13:06:47
【问题描述】:
在这里,我试图通过从头开始编码来理解神经网络(仅在 numpy 中)。我成功地进行了前向传递(使用点积)。但我不知道我应该如何进行反向传递(关于每个可训练参数的偏导数并使用 SDG 方程进行更新)。例如,损失可以是均方误差。 到目前为止,这是我的代码,我在描述剩余内容的代码下方添加了 cmets。
'''
I want to design a NN that has :
input layer I of 4 neurons
hidden layer H1 of 3 neurons
hidden layer H2 of 3 neurons
output layer O of 1 neurons
'''
import numpy as np
inputs = [1, 2, 3, 2.5]
# -------------- Hidden layers ---------------------------
wh1 = [[0.2, 0.8, -0.5, 1],
[0.5, -0.91, 0.26, -0.5],
[-0.26, -0.27, 0.17, 0.87]]
bh1 = [2, 3, 0.5]
wh2 = [[0.1, -0.14, 0.5],
[-0.5, 0.12, -0.33],
[-0.44, 0.73, -0.13]]
bh2 = [-1, 2, -0.5]
layer1_outputs = np.dot(wh1, np.array(inputs)) + bh1
layer2_outputs = np.dot(wh2, layer1_outputs,) + bh2
# ------------ output layer ------------------------------
who = [0.1, -0.14, 0.5]
bho = [4]
layer_out = np.dot(who, layer2_outputs,) + bho
# --------------------------------------------------------
print(layer_out)
true_outputs = np.sin(inputs)
# compute RMSE
# compute partial derivatives
# update weights
【问题讨论】:
-
看看this 博客。我认为您不应该在这里“如何做某事”。做一次尝试。如果您有错误或遇到一些困难,请提出问题。
-
Standford CS231n 有一个非常好的分步示例:cs231n.github.io/neural-networks-case-study
标签: python numpy neural-network backpropagation