#include #include #include template std::vector softmax(const std::vector& p) { size_t n = p.size(); std::vector result(n); std::transform(p.begin(), p.end(), result.begin(), [](auto x) { return std::exp(x); }); T s = std::accumulate(result.begin(), result.end(), 0.0f, std::plus()); std::transform(result.begin(), result.end(), result.begin(), [=](auto x) { return x / s; }); return result; }