首页 > 解决方案 > 神经网络 - 前向传播

问题描述

我正在尝试通过以下代码进行前向传播。

import numpy as np
# Create Forward propagation class
class NeuralNetwork:
    def _init_(self):
        self.w1 = np.array([[0.82, 0.53, 0.44],
                           [0.15, 0.61, 0.39],
                           [0.11, 0.41, 0.5],
                           [0.45, 0.23, 0.68]])
        self.w2 = np.array([[0.49, 0.71],
                           [0.23, 0.21],
                           [0.44, 0.45]]) # assumed w18=0.45
        self.b1 = 0.5
        self.b2 = 0.5

    def sigmoid(self,x):
        return 1.0/(1.0+np.exp(-x))

    def ForwardPropagation(self,x):
        self.a = np.matmul(x,self.w1) + self.b1
        self.h1 = self.sigmoid(self.a)
        self.o = np.matmul(self.h1,self.w2) + self.b2      
        h2 = self.sigmoid(self.o)
        return h2


x = np.array([[2, 5, 1, 4]])
NN = NeuralNetwork()    
h2 = NN.ForwardPropagation(x)
h2

但是它给了我以下错误: AttributeError: 'NeuralNetwork' object has no attribute 'w1'

你能帮我理解我做错了什么吗?

标签: forwardpropagation

解决方案


问题在于_init_(self)你的类的方法。你想要的是你的类的构造函数,它将初始化你的神经网络的权重和偏差。python 类的构造函数是__init__(self). 请注意双下划线,而不仅仅是您的代码中的下划线。由于此错误,解释器不会将您_init_(self)视为构造函数,因此不会初始化您的权重和偏差。

希望这可以帮助。


推荐阅读