【发布时间】:2021-08-06 23:36:16
【问题描述】:
问题:
我是神经网络主题的新手,今天想学习如何让我的神经网络学习。
我正在尝试做一个在互联网上找到的练习。
所有系列的误差总和应为:
1.501535 但我收到了7.394650000000001,所以我认为我的权重没有更新。这正是问题所在,但我不知道如何正确更新权重。
代码:
import numpy as np
def calculate(input_numbers: list[float], weights: np.array, iterations: int, alpha: float, goal: list[float]):
num_rows, num_cols = weights.shape
if not len(input_numbers) == num_cols:
print("Wrong matrix")
return 0
error = 0
prediction = np.dot(input_numbers, np.transpose(weights))
delta = prediction - goal
weights_delta = np.outer(delta, input_numbers)
weights = weights - (weights_delta * alpha)
error = error + (pow(prediction - goal, 2))
print("\nXXXXXXXXXXXXXXXX SUMMARY XXXXXXXXXXXXXXXXX")
print("delta :" + str(delta))
print("weights_delta :" + str(weights_delta))
print("Weights : " + str(weights))
print("error : " + str(error))
return np.sum(error)
input_1 = [8.5, 0.65, 1.2]
goal_1 = [0.1, 1, 0.1]
input_2 = [9.5, 0.8, 1.3]
goal_2 = [0, 1, 0]
input_3 = [9.9, 0.8, 0.5]
goal_3 = [0, 0, 0.1]
input_4 = [9.0, 0.9, 1.0]
goal_4 = [0.1, 1, 0.2]
weights_matrix = np.array([[0.1, 0.1, -0.3], [0.1, 0.2, 0.0], [0.0, 1.3, 0.1]])
for x in range(50):
print("\nITERATION: ", x)
error_sum = calculate(input_1, weights_matrix, 1, 0.01, goal_1)
error_sum = error_sum + calculate(input_2, weights_matrix, 1, 0.01, goal_2)
error_sum = error_sum + calculate(input_3, weights_matrix, 1, 0.01, goal_3)
error_sum = error_sum + calculate(input_4, weights_matrix, 1, 0.01, goal_4)
print("TOTAL ERROR: ", error_sum)
有人会指导我在哪里以及如何更新权重吗?我尝试在calculate() 中返回weights,但结果完全错误,所以我想应该以不同的方式完成。
【问题讨论】:
标签: python numpy neural-network