c++ 实现softmax
时间: 2023-11-20 14:42:44 浏览: 33
softmax函数是逻辑回归在多分类问题上的推广,它可以将一组数值转化为概率分布。在C语言中实现softmax函数的代码如下:
```c
#include <stdio.h>
#include <math.h>
void softmax(float *input, int n) {
float max_val = input[0];
float sum = 0.0;
// 找到数组中的最大值
for (int i = 1; i < n; i++) {
if (input[i] > max_val) {
max_val = input[i];
}
}
// 计算指数和
for (int i = 0; i < n; i++) {
input[i] = exp(input[i] - max_val);
sum += input[i];
}
// 归一化
for (int i = 0; i < n; i++) {
input[i] /= sum;
}
}
int main() {
float input[] = {1.9502, -2.125, 2.60156, 2.05078, -1.77539, -4.21875};
int n = sizeof(input) / sizeof(input[0]);
softmax(input, n);
for (int i = 0; i < n; i++) {
printf("%.6f ", input[i]);
}
return 0;
}
```
以上代码实现了一个softmax函数,该函数接受一个指向float数组的指针和数组的大小作为参数。它首先找到数组中的最大值,然后使用指数函数计算每个元素的指数值,并计算指数和。最后,将每个元素除以指数和以得到归一化的概率分布。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)