人工智能实战2019第5次作业-15041025-陶恺

一、绪论

项目 内容
这个作业属于哪个课程 [人工智能](https://edu.cnblogs.com/campus/buaa/BUAA-AI-2019)
这个作业的要求在哪里 [作业要求](https://edu.cnblogs.com/campus/buaa/BUAA-AI-2019/homework/2900)
我在这个课程的目标是 学习了解应用人工智能
这个作业在哪个具体方面帮助我实现目标 学习分类法
#二、代码实现 ``` import numpy as np import matplotlib.pyplot as plt

def ReadData_and():
X = np.array([1,1,0,0,1,0,1,0]).reshape(2,4)
Y = np.array([1,0,0,0]).reshape(1,4)
return X,Y

def ReadData_or():
X = np.array([1,1,0,0,1,0,1,0]).reshape(2,4)
Y = np.array([1,1,1,0]).reshape(1,4)
return X,Y

def Sigmoid(x):
s = 1/(1+np.exp(-x))
return s

def ForwardCalculation(W,B,X):
z = np.dot(W,X) + B
a = Sigmoid(z)
return a

def BackPropagation(X,y,A):
m = X.shape[1]
dZ = A - y
dB = dZ.sum(axis=1, keepdims=True)/m
dW = np.dot(dZ,X.T)/m
return dW, dB

def UpdateWeights(W, B, dW, dB, eta):
W = W - etadW
B = B - eta
dB
return W,B

def CheckLoss(W, B, X, Y):
count = X.shape[1]
A = ForwardCalculation(W,B,X)
p0 = np.multiply(1-Y,np.log(1-A))
p1 = np.multiply(Y,np.log(A))
LOSS = np.sum(-(p0 + p1))
loss = LOSS / count
return loss

if name == 'main':

逻辑或门

X, Y = ReadData_or()
num_features = X.shape[0]
num_example = X.shape[1]

W = np.zeros(num_features)
B = 0.0

eta = 0.1
eps = 1e-2
max_epoch = 5000
loss = 1
loss_list = []

for epoch in range(max_epoch):
    for i in range(num_example):
        x = X[:,i].reshape(num_features,1)
        y = Y[:,i].reshape(1,1)
        
        a = ForwardCalculation(W,B,x)
        dW, dB = BackPropagation(x,y,a)
        W, B = UpdateWeights(W, B, dW, dB, eta)
    
    loss = CheckLoss(W, B, X, Y)
    loss_list.append(loss)
    if loss < eps:
        break

A = ForwardCalculation(W,B,X)
Class = np.around(A)
print(A)
print(Class)

逻辑与门

X, Y = ReadData_and()
num_features = X.shape[0]
num_example = X.shape[1]

W = np.zeros(num_features)
B = 0.0

eta = 0.1
eps = 1e-2
max_epoch = 5000
loss = 1
loss_list = []

for epoch in range(max_epoch):
    for i in range(num_example):
        x = X[:,i].reshape(num_features,1)
        y = Y[:,i].reshape(1,1)
        
        a = ForwardCalculation(W,B,x)
        dW, dB = BackPropagation(x,y,a)
        W, B = UpdateWeights(W, B, dW, dB, eta)
    
    loss = CheckLoss(W, B, X, Y)
    loss_list.append(loss)
    if loss < eps:
        break

A = ForwardCalculation(W,B,X)
Class = np.around(A)
print(A)
print(Class)

#三、结果显示
逻辑或门
![](https://img2018.cnblogs.com/blog/1616671/201904/1616671-20190422235455239-92710796.png)

[[0.99999822 0.99118811 0.99117341 0.02203155]]
[[1. 1. 1. 0.]]


逻辑与门:
![](https://img2018.cnblogs.com/blog/1616671/201904/1616671-20190422235603078-477350896.png)

[[9.83615029e-01 1.16607751e-02 1.16776376e-02 2.32218752e-06]]
[[1. 0. 0. 0.]]

posted on 2019-04-08 17:54  tk1763  阅读(111)  评论(0)    收藏  举报