ANN_MLP::SIGMOID_SYM 的激励函数
来源:互联网 发布:淘宝产品修图 编辑:程序博客网 时间:2024/05/01 15:26
void calc_activ_func( Mat& sums, const Mat& w ) const
{
const double* bias = w.ptr<double>(w.rows-1);
int i, j, n = sums.rows, cols = sums.cols;
{
case IDENTITY:
scale = 1.;
break;
case SIGMOID_SYM:
scale = -f_param1;
break;
case GAUSSIAN:
scale = -f_param1*f_param1;
break;
default:
;
}
CV_Assert( sums.isContinuous() );
if( activ_func != GAUSSIAN )
{
for( i = 0; i < n; i++ )
{
}
if( activ_func == IDENTITY )
return;
}
else
{
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
{
double t = data[j] + bias[j];
data[j] = t*t*scale;
}
}
}
{
cols *= n;
n = 1;
}
switch( activ_func )
{
case SIGMOID_SYM:
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
{
if(!cvIsInf(data[j]))
{
double t = scale2*(1. - data[j])/(1. + data[j]);
data[j] = t;
}
else
{
data[j] = -scale2;
}
}
}
break;
case GAUSSIAN:
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
data[j] = scale2*data[j];
}
break;
default:
;
}
{
const double* bias = w.ptr<double>(w.rows-1);
int i, j, n = sums.rows, cols = sums.cols;
double scale = 0, scale2 = f_param2;
{
case IDENTITY:
scale = 1.;
break;
case SIGMOID_SYM:
scale = -f_param1;
break;
case GAUSSIAN:
scale = -f_param1*f_param1;
break;
default:
;
}
CV_Assert( sums.isContinuous() );
if( activ_func != GAUSSIAN )
{
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
data[j] = (data[j] + bias[j])*scale; // data[j] 即 Weight[LayerIndex][j] 数组与LayerIn的内积}
if( activ_func == IDENTITY )
return;
}
else
{
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
{
double t = data[j] + bias[j];
data[j] = t*t*scale;
}
}
}
exp( sums, sums ); //自然数 e 的 sums(I) 次幂, scale 是负数
if( sums.isContinuous() ){
cols *= n;
n = 1;
}
switch( activ_func )
{
case SIGMOID_SYM:
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
{
if(!cvIsInf(data[j]))
{
double t = scale2*(1. - data[j])/(1. + data[j]);
data[j] = t;
}
else
{
data[j] = -scale2;
}
}
}
break;
case GAUSSIAN:
for( i = 0; i < n; i++ )
{
double* data = sums.ptr<double>(i);
for( j = 0; j < cols; j++ )
data[j] = scale2*data[j];
}
break;
default:
;
}
}
结合上面的代码看, ANN_MLP::SIGMOID_SYM 的激励函数应该使用的是"双曲正切”
可以参考:http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/ml/doc/neural_networks.html
阅读全文
0 0
- ANN_MLP::SIGMOID_SYM 的激励函数
- 深度学习的激励函数
- 神经网络激励函数的作用
- 激励函数
- 神经网络激励函数的形象解释
- 引入非线性激励函数的作用
- 关于激励函数的一些思考
- 神经网络激励函数综合
- 激励函数-Activation Funciton
- 激励函数对比分析
- 神经网络常用激励函数
- 机器学习-激励函数
- 激励函数简介 Tensorflow最简单的三层神经网络及matplotlib可视化 附激励函数常见类型
- 转来的,激励激励自己
- OpenCV3.0的神经网络类-MLP(多层感知机参考)[cv::ml::ANN_MLP Class Reference]
- Tensorflow 激励函数 Activation Function
- 13激励函数(Activation Function)
- 失败后的激励
- SELECT语句的执行顺序
- 面试工作
- SecureRandom简介
- UGUI屏幕自适应
- 使用MYSQL如何挑选索引
- ANN_MLP::SIGMOID_SYM 的激励函数
- springMvc中websokect的应用实例
- centos7搭建elasticsearch5.5.1
- 怪兽IT学院PHP零基础入门在线学习手册
- UIViewController的生命周期及iOS程序执行顺序
- Linux cut命令用法
- 【Solidity】Solidity by Example
- Maven配置指南及使用规范
- static关键字----特点