【问题标题】:Updating weights in basic neural network更新基本神经网络中的权重
【发布时间】: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


    【解决方案1】:

    好的,所以,我不知道为什么会这样,可能与赋值有关。就像,在第一种情况下,它定义了一个 new 变量 weights,在第二行中它更改了您传递的数组。

    不管怎样,改变

    weights = weights - (weights_delta * alpha)

    weights -= (weights_delta * alpha)

    【讨论】:

      猜你喜欢
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2018-05-11
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多