用numpy写神经网络

作者: Rooooooooong | 来源:发表于2018-10-27 12:31 被阅读4次

1 浅层神经网络

import numpy as np
import pandas as pd
from sklearn.metrics import mean_absolute_error
x = np.array([[0,1,0],[1,0,1],[1,1,0],[0,0,1]])
y = np.array([1,0,1,0])
class shallow_NN(object):
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.weight = np.random.rand(3) * 2 -1
    
    def sigmoid(self,x):
        out = 1/(1+np.exp(-x))
        
        return out
    
    def forward(self,x):
        z = np.dot(x,self.weight)
        a = self.sigmoid(z)
        
        return a
    
    def backward(self,a,x):
        self.weight -= np.dot(x.T, (a - self.y ) * a * (1 - a)) #反向传播 #np.dot 默认把 (4,1) 视作 (4,) 
        
        return self
    
    def train(self):
        a = self.forward(self.x)
        self.backward(a,self.x)
        
    def predict(self,x):
        print("Predicted data based on trained weights:")
   
        return self.forward(x)
    
    def mae(self):
        y_pre = self.predict(self.x)
        error = mean_absolute_error(self.y,y_pre)
        print("Current mean absolute error: %s" % error)
        return error
s1 = shallow_NN(x,y)
for i in range(1000):
    print("Round %s" % i)
    s1.train()
    s1.mae()
s1.predict(x)

相关文章

网友评论

    本文标题:用numpy写神经网络

    本文链接:https://www.haomeiwen.com/subject/liagzftx.html