| 200 | // Get softmax layer according to engine. |
| 201 | template <typename Dtype> |
| 202 | shared_ptr<Layer<Dtype> > GetSoftmaxLayer(const LayerParameter& param) { |
| 203 | SoftmaxParameter_Engine engine = param.softmax_param().engine(); |
| 204 | if (engine == SoftmaxParameter_Engine_DEFAULT) { |
| 205 | engine = SoftmaxParameter_Engine_CAFFE; |
| 206 | #ifdef USE_CUDNN |
| 207 | engine = SoftmaxParameter_Engine_CUDNN; |
| 208 | #endif |
| 209 | } |
| 210 | if (engine == SoftmaxParameter_Engine_CAFFE) { |
| 211 | return shared_ptr<Layer<Dtype> >(new SoftmaxLayer<Dtype>(param)); |
| 212 | #ifdef USE_CUDNN |
| 213 | } else if (engine == SoftmaxParameter_Engine_CUDNN) { |
| 214 | return shared_ptr<Layer<Dtype> >(new CuDNNSoftmaxLayer<Dtype>(param)); |
| 215 | #endif |
| 216 | } else { |
| 217 | LOG(FATAL) << "Layer " << param.name() << " has unknown engine."; |
| 218 | throw; // Avoids missing return warning |
| 219 | } |
| 220 | } |
| 221 | |
| 222 | REGISTER_LAYER_CREATOR(Softmax, GetSoftmaxLayer); |
| 223 |
nothing calls this directly
no outgoing calls
no test coverage detected