activation_layer_cudnn_updater_cuda::activation_layer_cudnn_updater_cuda(cudnnActivationMode_t af) : input_data_desc(0) , activation_desc(0) { cudnn_safe_call(cudnnCreateTensorDescriptor(&input_data_desc)); cudnn_safe_call(cudnnCreateActivationDescriptor(&activation_desc)); cudnnSetActivationDescriptor(activation_desc, af, CUDNN_NOT_PROPAGATE_NAN, 0.0F); }
void CuDNNReLULayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { ReLULayer<Dtype>::LayerSetUp(bottom, top); // initialize cuDNN CUDNN_CHECK(cudnnCreate(&handle_)); cudnn::createTensor4dDesc<Dtype>(&bottom_desc_); cudnn::createTensor4dDesc<Dtype>(&top_desc_); handles_setup_ = true; cudnnCreateActivationDescriptor(&activation_desc_); cudnnSetActivationDescriptor(activation_desc_, CUDNN_ACTIVATION_RELU, CUDNN_PROPAGATE_NAN, 0.0); }
void CuDNNSigmoidLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { SigmoidLayer<Dtype>::LayerSetUp(bottom, top); // initialize cuDNN cudnn::createTensor4dDesc<Dtype>(&bottom_desc_); cudnn::createTensor4dDesc<Dtype>(&top_desc_); cudnnCreateActivationDescriptor(&activ_desc_); cudnnSetActivationDescriptor(activ_desc_, CUDNN_ACTIVATION_SIGMOID, CUDNN_PROPAGATE_NAN, 0.0); handles_setup_ = true; }
void CuDNNTanHLayer<Ftype, Btype>::LayerSetUp(const vector<Blob*>& bottom, const vector<Blob*>& top) { TanHLayer<Ftype, Btype>::LayerSetUp(bottom, top); // initialize cuDNN cudnn::createTensor4dDesc<Ftype>(&fwd_bottom_desc_); cudnn::createTensor4dDesc<Ftype>(&fwd_top_desc_); cudnn::createTensor4dDesc<Btype>(&bwd_bottom_desc_); cudnn::createTensor4dDesc<Btype>(&bwd_top_desc_); cudnnCreateActivationDescriptor(&activ_desc_); cudnnSetActivationDescriptor(activ_desc_, CUDNN_ACTIVATION_TANH, CUDNN_NOT_PROPAGATE_NAN, 0.0); handles_setup_ = true; }
void CuDNNTanHLayer<Dtype>::LayerSetUp(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top) { TanHLayer<Dtype>::LayerSetUp(bottom, top); // initialize cuDNN CUDNN_CHECK(cudnnCreate(&handle_)); cudnn::createTensor4dDesc<Dtype>(&bottom_desc_); cudnn::createTensor4dDesc<Dtype>(&top_desc_); #if CUDNN_VERSION_MIN(5, 0, 0) cudnnCreateActivationDescriptor(&activation_desc_); cudnnSetActivationDescriptor(activation_desc_, CUDNN_ACTIVATION_TANH, CUDNN_PROPAGATE_NAN, 0); #endif handles_setup_ = true; }
inline void createActivationDescriptor(cudnnActivationDescriptor_t* activ_desc, cudnnActivationMode_t mode) { CUDNN_CHECK(cudnnCreateActivationDescriptor(activ_desc)); CUDNN_CHECK(cudnnSetActivationDescriptor(*activ_desc, mode, CUDNN_PROPAGATE_NAN, Dtype(0))); }