#ifndef CAFFE2_OPERATORS_STOP_GRADIENT_H_ | |
#define CAFFE2_OPERATORS_STOP_GRADIENT_H_ | |
#include "caffe2/core/operator.h" | |
namespace caffe2 { | |
template <class Context> | |
class StopGradientOp : public Operator<Context> { | |
public: | |
USE_SIMPLE_CTOR_DTOR(StopGradientOp) | |
USE_OPERATOR_CONTEXT_FUNCTIONS; | |
bool RunOnDevice() override { | |
const auto& in = Input(0); | |
auto* out = Output(0); | |
if (out != &in) { | |
out->CopyFrom(in, true /*async*/); | |
} | |
return true; | |
} | |
}; | |
} // namespace caffe2 | |
#endif // CAFFE2_OPERATORS_STOP_GRADIENT_H_ |