namespace ngraph
{
    namespace op
    {
        class Dropout : public Op
        {
        public:
            CPU_BACKEND_API
            static constexpr NodeTypeInfo type_info{"Dropout", 0};
            const NodeTypeInfo& get_type_info() const override { return type_info; }
            Dropout(const Output<Node>& input,
                    const Output<Node>& gm_const,
                    const Output<Node>& use_seed,
                    const Output<Node>& seed,
                    const Output<Node>& keep_prob); // keep_prob = 1 - dropout_prob

            bool get_use_seed() const;
            uint64_t get_seed() const;
            double get_keep_prob() const;

            virtual std::shared_ptr<Node>
                clone_with_new_inputs(const OutputVector& new_args) const override;
        };
    }
}
