namespace v8 {
// classes
class AdaptiveAvgPool;
class AdaptiveMaxPool;
class DeformableConvolution;
class DetectionOutput;
class Gather;
class GatherND;
class I420toBGR;
class I420toRGB;
class If;
class MatrixNms;
class MaxPool;
class MulticlassNms;
class NV12toBGR;
class NV12toRGB;
class PriorBox;
class RandomUniform;
class Slice;
class Softmax;
// global functions
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const AdaptiveAvgPool \* op,
const std::vector<TShape>& input_shapes,
const ITensorAccessor& tensor_accessor = make_tensor_accessor()
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const AdaptiveMaxPool \* op,
const std::vector<TShape>& input_shapes,
const ITensorAccessor& tensor_accessor = make_tensor_accessor()
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const DeformableConvolution \* op,
const std::vector<TShape>& input_shapes,
CoordinateDiff& pads_begin,
CoordinateDiff& pads_end
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const DetectionOutput \* op,
const std::vector<TShape>& input_shapes
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const GatherND \* op,
const std::vector<TShape>& input_shapes
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const MatrixNms \* op,
const std::vector<TShape>& input_shapes
);
template <class TShape, class TContainer, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const MaxPool \* op,
const std::vector<TShape>& input_shapes,
TContainer& pads_begin,
TContainer& pads_end
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const PriorBox \*const op,
const std::vector<TShape>& input_shapes,
const ITensorAccessor& ta = make_tensor_accessor()
);
template <class TShape, class TRShape = result_shape_t<TShape>>
std::vector<TRShape> shape_infer(
const RandomUniform \* op,
const std::vector<TShape>& input_shapes,
const ITensorAccessor& ta = make_tensor_accessor()
);
template <class T, class TRShape = result_shape_t<T>>
std::vector<TRShape> shape_infer(
const Slice \* op,
const std::vector<T>& input_shapes,
const ITensorAccessor& ta = make_tensor_accessor()
);
} // namespace v8