namespace v4 {
// classes
class CTCLoss;
class HSwish;
class Interpolate;
class LSTMCell;
class Mish;
class NonMaxSuppression;
class Proposal;
class Range;
class ReduceL1;
class ReduceL2;
class SoftPlus;
class Swish;
// global functions
template <class T>
void shape_infer(
const CTCLoss \* op,
const std::vector<T>& input_shapes,
std::vector<T>& output_shapes
);
template <typename T>
void correct_pads_attr(
const Interpolate \* op,
std::vector<size_t>& pads_begin,
std::vector<size_t>& pads_end,
const std::vector<T>& input_shapes
);
int64_t multiply_bound_and_scale(int64_t bound, float scale);
template <typename T>
void infer_using_scales(
T& output_shape,
const std::vector<int64_t>& axes,
const std::vector<float>& scales
);
template <class T>
void shape_infer(
const Interpolate \* op,
std::vector<size_t>& pads_begin,
std::vector<size_t>& pads_end,
const std::vector<T>& input_shapes,
std::vector<T>& output_shapes,
const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data
);
template <class T>
void shape_infer(
const LSTMCell \* op,
const std::vector<T>& input_shapes,
std::vector<T>& output_shapes
);
template <class T>
void shape_infer(
const ov::op::v4::Proposal \* op,
const std::vector<T>& input_shapes,
std::vector<T>& output_shapes
);
template <class T>
void shape_infer(
const Range \* op,
const std::vector<T>& input_shapes,
std::vector<T>& output_shapes,
const std::map<size_t, std::shared_ptr<ngraph::runtime::HostTensor>>& constant_data = {}
);
} // namespace v4