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改變的幅度稱爲學習率