神经网络回归代码怎么写
时间: 2023-11-05 09:04:39 浏览: 12
以下是一个简单的神经网络回归代码示例:
```python
import numpy as np
# 定义神经网络类
class NeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
self.weights1 = np.random.randn(input_size, hidden_size)
self.bias1 = np.zeros((1, hidden_size))
self.weights2 = np.random.randn(hidden_size, output_size)
self.bias2 = np.zeros((1, output_size))
# 定义前向传播函数
def forward(self, X):
self.z1 = np.dot(X, self.weights1) + self.bias1
self.a1 = np.tanh(self.z1)
self.z2 = np.dot(self.a1, self.weights2) + self.bias2
self.y_hat = self.z2
return self.y_hat
# 定义反向传播函数
def backward(self, X, y, y_hat, learning_rate):
delta2 = y_hat - y
delta1 = (1 - np.power(self.a1, 2)) * np.dot(delta2, self.weights2.T)
d_weights2 = np.dot(self.a1.T, delta2)
d_bias2 = np.sum(delta2, axis=0, keepdims=True)
d_weights1 = np.dot(X.T, delta1)
d_bias1 = np.sum(delta1, axis=0)
self.weights2 -= learning_rate * d_weights2
self.bias2 -= learning_rate * d_bias2
self.weights1 -= learning_rate * d_weights1
self.bias1 -= learning_rate * d_bias1
# 定义数据集
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([[3], [7], [11], [15]])
# 初始化神经网络
nn = NeuralNetwork(2, 3, 1)
# 训练神经网络
for i in range(10000):
y_hat = nn.forward(X)
nn.backward(X, y, y_hat, 0.01)
# 测试神经网络
test = np.array([[2, 3], [4, 5], [6, 7]])
result = nn.forward(test)
print(result)
```
在上面的代码中,我们首先定义了一个`NeuralNetwork`类,它包含了神经网络的权重和偏置,并且定义了前向传播和反向传播函数。
然后我们定义了一个简单的数据集`X`和`y`,并初始化了神经网络`nn`。
在训练过程中,我们使用`forward`函数进行前向传播,得到预测值`y_hat`,然后使用`backward`函数进行反向传播,更新权重和偏置。
最后,我们使用训练好的神经网络进行测试,输入测试数据`test`,得到预测结果`result`。