1 import numpy as np 2 3 # 生成随机权值(无先验经验时通常使用随机权值) 4 m = np.random.randint(100, size=10) 5 # 训练数据 6 x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 7 # 训练数据对应的指望目标(学习目标) False为奇数,True为偶数 8 y = np.array([False, True, False, True, False, True, False, True, False, True]) 9 # 阈值(自行设置) 10 thresh_hold = 52 11 # 学习率,即变化幅度 12 alpha = 5 13 14 15 # 16 def active(): 17 print(m) 18 return m * x 19 20 21 def ajust_m(j): 22 err = 0 23 right = 0 24 o_new = active() 25 o_t = o_new > thresh_hold 26 for i in range(10): 27 if o_t[i] != y[i]: 28 err += 1 29 if o_t[i]: 30 m[i] = m[i] - alpha 31 else: 32 m[i] = m[i] - alpha 33 else: 34 right += 1 35 return right 36 37 38 def predict(a): 39 result = a * m[a - 1] 40 if result > thresh_hold: 41 return True 42 else: 43 return False 44 45 46 for j in range(100): 47 right = ajust_m(j) 48 if right == 10: 49 print('第{}次已经训练成功,中止训练'.format(j + 1)) 50 break 51 if j == 99 and right != 10: 52 print('训练了{}次,训练失败!!'.format(j + 1)) 53 54 print('', predict(8))
A,B代表两个工做地点的收益,A一个小时50¥,B一个小时100¥ W1,W2是两地工做时间,称为权重,机器学习中要调整的系数,[W1,W2]构成一个二维搜索空间 T = W1*A + W2*B 是咱们的评估函数 TMax = 650 是指望目标,也是咱们的学习目标 天天工做8小时,每地至少工做1小时,这是学习约束 delta = |T - TMax| 绝对值是咱们的评估函数,损失函数(cost,loss) delta = 达到什么结果搜索结束,由算法来设计,例如delta=1 搜索结束(搜索结束也称为函数收敛) 在搜索空间中尝试搜索过程当中,对W1,W2改变的幅度称为学习率