神经网络在数字识别中的应用C++
时间: 2024-01-03 12:05:13 浏览: 76
神经网络在数字识别中的应用可以使用C++来实现。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
// 定义神经网络类
class NeuralNetwork {
private:
std::vector<std::vector<double>> weights; // 权重矩阵
std::vector<double> biases; // 偏置向量
public:
NeuralNetwork() {
// 初始化权重和偏置
// 这里只是一个示例,实际应用中需要根据具体问题进行初始化
weights = {{0.1, 0.2, 0.3},
{0.4, 0.5, 0.6},
{0.7, 0.8, 0.9}};
biases = {0.1, 0.2, 0.3};
}
// 前向传播函数
std::vector<double> forward(std::vector<double> input) {
std::vector<double> output;
// 计算每个神经元的输出
for (int i = 0; i < weights.size(); i++) {
double sum = 0.0;
for (int j = 0; j < input.size(); j++) {
sum += input[j] * weights[i][j];
}
sum += biases[i];
output.push_back(activationFunction(sum));
}
return output;
}
// 激活函数(这里使用sigmoid函数作为激活函数)
double activationFunction(double x) {
return 1.0 / (1.0 + exp(-x));
}
};
int main() {
// 创建神经网络对象
NeuralNetwork nn;
// 输入数据
std::vector<double> input = {0.5, 0.6, 0.7};
// 进行前向传播
std::vector<double> output = nn.forward(input);
// 输出结果
for (int i = 0; i < output.size(); i++) {
std::cout << "Output " << i << ": " << output[i] << std::endl;
}
return 0;
}
```
这个示例展示了一个简单的三层神经网络的前向传播过程,使用了sigmoid函数作为激活函数。你可以根据具体的需求和数据集进行相应的调整和扩展。
阅读全文