MLP(多层感知机)是一种常用的神网络
模型,用于解决分类和回归问题。下面是一个简单的
Python 代码示例,用于
实现 MLP算法:
pythonimport numpy as npclassMLP:def __init__(self, input_size, hidden_size, output_size):self.input_size = input_sizeself.hidden_size = hidden_sizeself.output_size = output_size# 初始化权重self.W1 = np.random.randn(self.input_size, self.hidden_size)self.b1 = np.zeros((1, self.hidden_size))self.W2 = np.random.randn(self.hidden_size, self.output_size)self.b2 = np.zeros((1, self.output_size))def forward(self, X):# 前向传播self.z1 = np.dot(X, self.W1) + self.b1self.a1 = np.tanh(self.z1)self.z2 = np.dot(self.a1, self.W2) + self.b2self.a2 = self.sigmoid(self.z2)return self.a2def backward(self, X, y, learning_rate):# 反向传播m = X.shape[0]# 计算输出层的误差delta2 = self.a2 - y# 计算隐藏层的误差delta1 = np.dot(delta2, self.W2.T) * (1 - np.power(self.a1, 2))# 更新权重和偏置dW2 = np.dot(self.a1.T, delta2) / mdb2 = np.sum(delta2, axis=0) / mdW1 = np.dot(X.T, delta1) / mdb1 = np.sum(delta1, axis=0) / mself.W2 -= learning_rate * dW2self.b2 -= learning_rate * db2self.W1 -= learning_rate * dW1self.b1 -= learning_rate * db1def train(self, X, y, epochs, learning_rate):for epoch in range(epochs):# 前向传播output = self.forward(X)# 反向传播self.backward(X, y, learning_rate)# 计算损失函数loss = self.loss_function(output, y)if epoch % 100 == 0:print(f"Epoch {epoch}, Loss: {loss}")def predict(self, X):# 预测output = self.forward(X)predictions = np.round(output)return predictionsdef loss_function(self, y_pred, y_true):# 损失函数(交叉熵)loss = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))return lossdef sigmoid(self, x):# sigmoid激活函数return 1 / (1 + np.exp(-x))
使用示例:
python# 创建MLP对象mlp=MLP(input_size=2, hidden_size=4, output_size=1)# 训练数据X_train = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])y_train = np.array([[0], [1], [1], [0]])# 训练模型 mlp.train(X_train, y_train, epochs=1000, learning_rate=0.1)# 预测数据X_test = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])predictions =mlp.predict(X_test)print(predictions)
这段
代码 实现了一个简单的
MLP算法,用于解决逻辑门问题(XOR)。你可以根据自己的需求进行修改和扩展。希望对你有帮助!
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4422.html