.. _program_listing_file_src_optimizers_clippers.h: Program Listing for File clippers.h =================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/optimizers/clippers.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include "tensors/tensor.h" #include "tensors/allocator.h" namespace marian { class Clipper { protected: Ptr allocator_; public: virtual ~Clipper() {} virtual float clip(Tensor, float /*costScalingFactor*/ = 1.f) = 0; virtual void setAllocator(Ptr allocator) { allocator_ = allocator; } }; class ElementwiseClipper : public Clipper { public: ElementwiseClipper(float c = 10.0) : c_(c) {} ~ElementwiseClipper() override {} float clip(Tensor t, float costScalingFactor = 1.f) override; private: float c_; }; class NormClipper : public Clipper { public: NormClipper(float c = 1.0) : c_(c) {} ~NormClipper() override {} float clip(Tensor t, float costScalingFactor = 1.f) override; private: float c_; }; // don't clip, just report Froebenius norm class ReportNormClipper : public Clipper { public: ReportNormClipper(float /*c = 1.0*/) {} ~ReportNormClipper() override {} float clip(Tensor t, float costScalingFactor = 1.f) override; }; } // namespace marian