以下是一个简单的深度神经网络的代码,用于二分类任务:

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]]

说明该神经网络成功地解决了异或问题。

写一段python关于深度神经网络的代码

原文地址: https://www.cveoy.top/t/topic/ucf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录