如何获得具有最小总误差的重量和偏差

时间:2018-05-10 07:05:58

标签: python python-3.x numpy machine-learning neural-network

Weight1,Weight2,bias1,bias2是随机列表:

  • list1= [[(list of Weight1)], [(list of Weight2)], [(list of bias1)], [list of bias2)]]
  • ist2= [[(list of Weight1)], [(list of Weight2)], [(list of bias1)], [list of bias2)]]
  • list3= [[(list of Weight1)], [(list of Weight2)], [(list of bias1)], [list of bias2)]]

popSize = 3

如何获得最小tot_error的体重和偏见(Weight1,Weight2,bias1,bias2)

def findGStar(Weight1, Weight2, bias1, bias2):
    z1 = X_trainNorm.dot(Weight1) + bias1
    a1 = np.tanh(z1)
    z2 = a1.dot(Weight2) + bias2
    target = np.reshape(y_trainNorm,(-1,1))
    error = 0
    error = abs(z2-target)
    tot_error = sum(error)
    return tot_error

vec = []
for i in range(popSize):
    vector_new = findGStar(vector[i][0], vector[i][1], vector[i][2], vector[i][3])
    vec.append(vector_new)
vec.sort()
minimum = vec[0]

1 个答案:

答案 0 :(得分:0)

获得要优化其权重的函数的结果pred_y_i后,计算MSE:

MSE = (1/N) * sum_i=1..N (y_i - pred_y_i)^2

现在您使用您选择的优化算法。这些可以使用衍生物(梯度下降,牛顿法)或无衍生物(粒子群优化)。

对于需要派生的优化,您希望在权重方面对成本函数(MSE)进行部分推导。并根据一些更新标准(SGD,ADAM,Adagrad等)更新权重。

<强>更新

要找出三个列表中哪一个具有与MSE相关的最佳权重集:

for i in range(popSize):
    vector_new = findGStar(vector[i][0], vector[i][1], vector[i][2], vector[i][3])
    vec.append(vector_new)
list_id = np.argmin(vec)
print('List {} contains the best parameter.'.format(list_id+1))

通过单独排序vec列表,您将丢失有关每个错误属于哪个列表的信息。

当我们第一次获得vec向量时,vec中的错误索引与list#列表中的vector索引相对应。所以我们可以找出哪个索引保持最小错误,并使用该索引来提取list#