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]
答案 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#
。