|
|
|
@ -49,7 +49,7 @@ class ActivationGradGpuKernel : public GpuKernel {
|
|
|
|
|
}
|
|
|
|
|
T *dy = nullptr;
|
|
|
|
|
T *y = nullptr;
|
|
|
|
|
if (mode_ == CUDNN_ACTIVATION_RELU || mode_ == CUDNN_ACTIVATION_ELU) {
|
|
|
|
|
if (mode_ == CUDNN_ACTIVATION_RELU || mode_ == CUDNN_ACTIVATION_ELU || mode_ == CUDNN_ACTIVATION_CLIPPED_RELU) {
|
|
|
|
|
dy = GetDeviceAddress<T>(inputs, 0);
|
|
|
|
|
y = GetDeviceAddress<T>(inputs, 1);
|
|
|
|
|
} else {
|
|
|
|
@ -90,7 +90,8 @@ class ActivationGradGpuKernel : public GpuKernel {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
std::vector<int> shape;
|
|
|
|
|
CHECK_CUDNN_RET_WITH_EXCEPT(cudnnSetActivationDescriptor(activation_desc_, mode_, CUDNN_PROPAGATE_NAN, 0.0),
|
|
|
|
|
double coef = (mode_ == CUDNN_ACTIVATION_CLIPPED_RELU) ? 5.999999 : 0.0;
|
|
|
|
|
CHECK_CUDNN_RET_WITH_EXCEPT(cudnnSetActivationDescriptor(activation_desc_, mode_, CUDNN_PROPAGATE_NAN, coef),
|
|
|
|
|
"SetActivationDescriptor failed");
|
|
|
|
|
|
|
|
|
|
const int split_dim = 4;
|
|
|
|
@ -138,6 +139,7 @@ class ActivationGradGpuKernel : public GpuKernel {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::map<std::string, cudnnActivationMode_t> kernel_map = {{"ReluGrad", CUDNN_ACTIVATION_RELU},
|
|
|
|
|
{"ReLU6Grad", CUDNN_ACTIVATION_CLIPPED_RELU},
|
|
|
|
|
{"TanhGrad", CUDNN_ACTIVATION_TANH},
|
|
|
|
|
{"ELUGrad", CUDNN_ACTIVATION_ELU},
|
|
|
|
|
{"SigmoidGrad", CUDNN_ACTIVATION_SIGMOID}};
|
|
|
|
|