softmax的c++实现
时间: 2024-10-29 15:06:18 浏览: 9
0456-极智开发-解读C++实现softmax
5星 · 资源好评率100%
Softmax函数常用于深度学习中的概率归一化,它将一组实数映射到0到1之间的概率分布。在C++中实现softmax函数的一种常见方法如下:
```cpp
#include <cmath>
#include <vector>
// 定义softmax函数
std::vector<double> softmax(const std::vector<double>& input) {
double max_value = *std::max_element(input.begin(), input.end());
std::vector<double> output(input.size());
for (size_t i = 0; i < input.size(); ++i) {
// 对数转换并减去最大值以防止溢出
output[i] = exp(input[i] - max_value);
}
// 归一化总和为1
double sum = 0.0;
for (double value : output) {
sum += value;
}
for (size_t i = 0; i < output.size(); ++i) {
output[i] /= sum;
}
return output;
}
// 使用示例
int main() {
std::vector<double> input = {1.0, 2.0, 3.0};
std::vector<double> probabilities = softmax(input);
for (double prob : probabilities) {
std::cout << "Probability: " << prob << "\n";
}
return 0;
}
```
在这个例子中,`exp()`函数是自然指数函数,`*std::max_element()`找到输入向量中的最大元素。softmax函数首先计算每个元素的对数值然后减去最大值,接着将结果进行指数运算得到中间结果,最后对所有元素求和并除以总和得到归一化的概率。
阅读全文