作者:公寓朝仓音梦NQey | 来源:互联网 | 2023-09-12 15:26
floatsigmoid(floatx){return(1(1exp(-x)));}floatsigmoid_dy_dz(floatx){return(x*(1.0-x))
float sigmoid(float x)
{return (1 / (1 + exp(-x)));
}
float sigmoid_dy_dz(float x)
{return (x * (1.0 - x));
}
float tanh_dy_dz(float x)
{return (1.0 - x*x);
}
//对每一行进行softmax
void softmax(float *x, int row, int column)
{for (int j = 0; j } //row*column
下面是softmax:
这个可以:
https://blog.csdn.net/u013381011/article/details/82500805
//对每一行进行softmax
void softmax(float* x, int row, int column)
{for (int j &#61; 0; j } //row*columnint main(){float a[] &#61; { 0.1,0.2,0.3,0.4 ,-0.1};softmax(a,1,5);std::cout <<"Hello World!\n";
}
softmax c&#43;&#43;实现with opencv
cv::Mat_ mat(3,3);mat(0,0)&#61;VIRTUAL_FOCAL;mat(0,1)&#61;0;mat(0,2)&#61;roiSize_x/2;mat(1,0)&#61;0;
int softmax(const cv::Mat & src, cv::Mat & dst)
{float max &#61; 0.0;float sum &#61; 0.0;max &#61; *max_element(src.begin(), src.end());cv::exp((src - max), dst);sum &#61; cv::sum(dst)[0];dst /&#61; sum;return 0;
}
c&#43;&#43;:
#include
#include
#include
#include
#include double myfunction(double num) {return exp(num);
}template
void softmax(const typename::std::vector &v, typename::std::vector &s){double sum&#61;0.0;transform(v.begin(), v.end(), s.begin(), myfunction);sum&#61;accumulate(s.begin(), s.end(), sum);for(size_t i&#61;0; i}int main() {double a[]&#61;{1.0, 3.0, 2.0};std::vector v_a(a, a&#43;sizeof a/sizeof a[0]), v_b(v_a);std::vector::const_iterator it&#61;v_a.begin();for(; it!&#61;v_a.end(); &#43;&#43;it) {std::cout<<*it<<" ";}std::cout<}