简单的神经网络模型

import numpy as np

class NeuralNetwork():

    

    def __init__(self):

        # seeding for random number generation

        np.random.seed(1)

        

        #converting weights to a 3 by 1 matrix with values from -1 to 1 and mean of 0

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

    def sigmoid(self, x):

        #applying the sigmoid function

        return 1 / (1 + np.exp(-x))

    def sigmoid_derivative(self, x):

        #computing derivative to the Sigmoid function

        return x * (1 - x)

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

        

        #training the model to make accurate predictions while adjusting weights continually

        for iteration in range(training_iterations):

            #siphon the training data via  the neuron

            output = self.think(training_inputs)

            #computing error rate for back-propagation

            error = training_outputs - output

            

            #performing weight adjustments

            adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output))

            self.synaptic_weights += adjustments

    def think(self, inputs):

        #passing the inputs via the neuron to get output   

        #converting values to floats

        

        inputs = inputs.astype(float)

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

        return output

if __name__ == "__main__":

    #initializing the neuron class

    neural_network = NeuralNetwork()

    print("Beginning Randomly Generated Weights: ")

    print(neural_network.synaptic_weights)

    #training data consisting of 4 examples--3 input values and 1 output

    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

    #training taking place

    neural_network.train(training_inputs, training_outputs, 15000)

    print("Ending Weights After Training: ")

    print(neural_network.synaptic_weights)

    user_input_one = str(input("User Input One: "))

    user_input_two = str(input("User Input Two: "))

    user_input_three = str(input("User Input Three: "))

    

    print("Considering New Situation: ", user_input_one, user_input_two, user_input_three)

    print("New Output data: ")

    print(neural_network.think(np.array([user_input_one, user_input_two, user_input_three])))

print("Wow, we did it!")
 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值