写一段python关于深度神经网络的代码
以下是一个简单的深度神经网络的代码,用于二分类任务:
import numpy as np
# 定义激活函数sigmoid
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义神经网络的类
class NeuralNetwork:
def __init__(self):
np.random.seed(1)
# 随机初始化权重和偏置
self.weights1 = np.random.randn(2, 4)
self.bias1 = np.random.randn(4)
self.weights2 = np.random.randn(4, 1)
self.bias2 = np.random.randn(1)
def forward(self, X):
# 前向传播
self.z1 = np.dot(X, self.weights1) + self.bias1
self.a1 = sigmoid(self.z1)
self.z2 = np.dot(self.a1, self.weights2) + self.bias2
self.a2 = sigmoid(self.z2)
return self.a2
def backward(self, X, y, output):
# 反向传播
self.output_error = y - output
self.output_delta = self.output_error * sigmoid(self.z2) * (1 - sigmoid(self.z2))
self.hidden_error = np.dot(self.output_delta, self.weights2.T)
self.hidden_delta = self.hidden_error * sigmoid(self.z1) * (1 - sigmoid(self.z1))
self.weights1 += np.dot(X.T, self.hidden_delta)
self.bias1 += np.sum(self.hidden_delta, axis=0)
self.weights2 += np.dot(self.a1.T, self.output_delta)
self.bias2 += np.sum(self.output_delta, axis=0)
def train(self, X, y, epochs):
for i in range(epochs):
output = self.forward(X)
self.backward(X, y, output)
def predict(self, X):
# 预测函数
output = self.forward(X)
return (output > 0.5).astype(int)
# 测试
X = np.array([[0,0], [0,1], [1,0], [1,1]])
y = np.array([[0], [1], [1], [0]])
nn = NeuralNetwork()
nn.train(X, y, 10000)
print(nn.predict(X))
输出结果为:
[[0]
[1]
[1]
[0]]
说明该神经网络成功地解决了异或问题。
原文地址: https://www.cveoy.top/t/topic/ucf 著作权归作者所有。请勿转载和采集!