一、实验代码:
import numpy as np data = np.array([[2.104, 3, 4], [1.600, 3, 3.3], [2.400, 3, 3.69], [1.406, 2, 2.32], [3, 4, 5.4]])#数据导入 #初始化学习系数,W数组值 al = 0.1 W0 = W1 = 0 W2 = 1 #定义函数 def h(W0, W1, W2, i): return W0 + W1 * i[0] + W2 * i[1] - i[2] #定义训练函数 def train(W0, W1, W2, al, data): damage = 0 BP0 = BP1 = BP2 = 0 for i in data: #损失函数 damage = 0.5 * h(W0, W1, W2, i) ** 2 BP0 = BP0 + h(W0, W1, W2, i) BP1 = BP1 + h(W0, W1, W2, i) * i[0] BP2 = BP2 + h(W0, W1, W2, i) * i[1] n = len(data) BP0 = BP0 / n BP1 = BP1 / n BP2 = BP2 / n damage = damage / n W0 = W0 - al * BP0 W1 = W1 - al * BP1 W2 = W2 - al * BP2 return damage, W0, W1, W2 #计数 count_num = 0 for a in range(2000): count_num += 1 j,W0,W1,W2 = train(W0, W1, W2, al, data) print("check_count:", count_num) print(j,W0,W1,W2)