现有Paddle的activation的实现主要放在paddle/gserver/activations/ActivationFunction.cpp
在ActivationFunction.cpp中使用了一个static的全局变量gActivationRegistrar
每实现一个新的激活函数,会在这个变量中加入新的active type, END_DEFINE_ACTIVATION(ACTIVATION_NAME)
这个变量会在静态函数create函数中用于创建激活函数。
最终Layer.cpp中会调用这个静态函数create
现在的问题是,由于最终调用的是activation_.reset(ActivationFunction::create(action_type));
如果想要实现mkldnn的激活函数,并且不改变这个接口的话,就需要按照#4199 中加宏定义的方式方式实现。
但是宏定义的方式并不推荐,大家有没有比较好的方式可以解决 @luotao1