我在理解神经网络中的成本函数时遇到问题。我读过很多书和博客文章,但它们都描述了神经网络中的一点是最小化成本函数(如平方和误差):
我试图查看用于解决多层神经网络和反向传播问题的代码。我的问题是:在代码中哪里可以找到成本函数?如何绘制误差面?
import numpy as np
X_XOR = np.array([[0,0,1], [0,1,1], [1,0,1],[1,1,1]])
y_truth = np.array([[0],[1],[1],[0]])
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_der(output):
return output * (1 - output)
np.random.seed(1)
syn_0 = 2*np.random.random((3,4)) - 1
syn_1 = 2*np.random.random((4,1)) - 1
for i in range(60000):
layer_1 = sigmoid(X_XOR.dot(syn_0))
layer_2 = sigmoid(layer_1.dot(syn_1))
error = 0.5 * ((layer_2 - y_truth) ** 2)
layer_2_delta = error * sigmoid_der(layer_2)
layer_1_error = layer_2_delta.dot(syn_1.T)
layer_1_delta = layer_1_error * sigmoid_der(layer_1)
syn_1 -= layer_1.T.dot(layer_2_delta)
syn_0 -= X_XOR.T.dot(layer_1_delta)
if i % 10000 == 1:
print(layer_2)
print(layer_2)
