import numpy as np
# sigmoid函数
def sigmoid(x):
return 1/(1+np.exp(-x))
与书中不同,这里我按类实现
import numpy as np
def sigmoid(x):
'''
sigmoid激活函数
'''
return 1/(1+np.exp(-x))
def fn(x):
return x
class trimind:
'''
输出层神经元为两个
'''
def __init__(self):
'''
权重和偏置的初始化
'''
self.network={}
# 第一层
self.network['w1']=np.array([[0.1,0.2,0.3],[0.2,0.4,0.6]])
self.network['b1']=np.array([0.1,0.2,0.3])
# 第二层
self.network['w2']=np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]])
self.network['b2']=np.array([0.1, 0.2])
# 第三层
self.network['w3']=np.array([[0.1,0.3],[0.2,0.4]])
self.network['b3']=np.array([0.1, 0.2])
def forward(self,x:np.array):
'''
神经元的正向传播
'''
w1,w2,w3=self.network['w1'],self.network['w2'],self.network['w3']
b1,b2,b3=self.network['b1'],self.network['b2'],self.network['b3']
a1 = np.dot(x,w1) + b1
z1 = sigmoid(a1)
a2 = np.dot(z1,w2) + b2
z2 = sigmoid(a2)
a3 = np.dot(z2,w3) + b3
y=fn(a3)
return y
network3=trimind()
in_x=np.array([0.1,0.5])
print(network3.forward(in_x))