首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Python 3.9.1的Synaptic Weight错误?

如何修复Python 3.9.1的Synaptic Weight错误?
EN

Stack Overflow用户
提问于 2021-03-22 07:45:07
回答 1查看 55关注 0票数 0

在这里,我尝试用Python创建一个简单的神经网络,导入numpy模块。NeuralNetwork类被定义为具有随机种子和突触权重。

代码语言:javascript
复制
import numpy as np

class NeuralNetwork():

    def _init_(self):
        np.random.seed(1)

        self.synaptic_weights = 2 * random.random((3, 1)) - 1

    def sigmoid(self, x):
        return 1 / (1 + exp(-x))

    def sigmoid_derivative(self, x):
        return x * (1 - x)

    def train(self, training_inputs, training_outputs, training_iterations):

        for iteration in range(training_iterations):

            output = self.think(training_inputs)
            error = training_outputs - output
            adjustments = dot(training_inputs.T, error * self.sigmoid_derivative(output))
            self.synaptic_weights += adjustments

    def think(self, inputs):

        inputs = inputs.astype(float)
        output = self.sigmoid(np.dot(inputs, self.synaptic_weights))

        return output


if __name__ == "__main__":

    neural_network = NeuralNetwork()

    print('Random synaptic weights: ')
    print(NeuralNetwork.synaptic_weights)

    training_inputs = np.array([[0,0,1],
                                [1,1,1],
                                [1,0,1],
                                [0,1,1]])

    training_outputs = np.array([[0,1,1,0]]).T

    neural_network.train(training_inputs, training_outputs, 1000)

    print('Synaptic weights after training: ')

    print(neural_network.synaptic_weights)

    G = str(input('input 1: '))
    g = str(input('input 2: '))
    O = str(input('input 3: '))

    print('New situation: input data = ', G, g, O)
    print('Output data: ')
    print(neural_network.think(np.array([G, g, O])))

我一直收到一个属性错误,即使我使用的是numpy,并用synaptic_weights定义了NeuralNet。

代码语言:javascript
复制
Random synaptic weights: 
Traceback (most recent call last):
  File "C:\Python 3.9\neural_net.py", line 38, in <module>
    print(NeuralNetwork.synaptic_weights)
AttributeError: class NeuralNetwork has no attribute 'synaptic_weights'
[Finished in 0.465s]
EN

回答 1

Stack Overflow用户

发布于 2021-03-22 08:30:23

有一些错误。

__init__Neural_Network.synaptic_weights -> neural_network.synaptic_weights

下面应该可以解决这些问题。

代码语言:javascript
复制
import numpy as np


class NeuralNetwork():

    def __init__(self):
        np.random.seed(1)

        self.synaptic_weights = 2 * np.random.random((3, 1)) - 1

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

    def sigmoid_derivative(self, x):
        return x * (1 - x)

    def train(self, training_inputs, training_outputs, training_iterations):

        for iteration in range(training_iterations):

            output = self.think(training_inputs)
            error = training_outputs - output
            adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output))
            self.synaptic_weights += adjustments

    def think(self, inputs):

        inputs = inputs.astype(float)
        output = self.sigmoid(np.dot(inputs, self.synaptic_weights))

        return output


if __name__ == "__main__":

    neural_network = NeuralNetwork()

    print('Random synaptic weights: ')
    print(neural_network.synaptic_weights)

    training_inputs = np.array([[0,0,1],
                                [1,1,1],
                                [1,0,1],
                                [0,1,1]])

    training_outputs = np.array([[0,1,1,0]]).T

    neural_network.train(training_inputs, training_outputs, 1000)

    print('Synaptic weights after training: ')

    print(neural_network.synaptic_weights)

    G = str(input('input 1: '))
    g = str(input('input 2: '))
    O = str(input('input 3: '))

    print('New situation: input data = ', G, g, O)
    print('Output data: ')
    print(neural_network.think(np.array([G, g, O])))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66738743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档