1 #include <ATen/core/dispatch/KernelRegistration.h> 2 #include "caffe2/operators/experimental/c10/schemas/sigmoid.h" 3 #include "caffe2/utils/eigen_utils.h" 4 #include "caffe2/utils/math.h" 5 #include "caffe2/core/tensor.h" 11 template <
class DataType>
12 void sigmoid_op_cpu_impl(
15 Tensor input{C10Tensor(input_)};
16 Tensor output{C10Tensor(output_)};
17 output.ResizeLike(input);
19 caffe2::ConstEigenVectorArrayMap<DataType> xM(
20 input.data<DataType>(), input.numel());
21 caffe2::EigenVectorArrayMap<DataType>(
22 output.mutable_data<DataType>(), input.numel()) =
23 1. / (1. + (-xM).exp());
29 C10_REGISTER_KERNEL(caffe2::ops::Sigmoid)
30 .kernel<decltype(caffe2::sigmoid_op_cpu_impl<float>), &caffe2::sigmoid_op_cpu_impl<float>>()
31 .dispatchKey(CPUTensorId());
Tensor class holds a shared pointer to the implementation TensorImpl, redirects API calls to TensorIm...
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...
To register your own kernel for an operator, do in one (!) cpp file: C10_REGISTER_KERNEL(OperatorHand...