// This file is part of Eigen, a lightweight C++ template library // for linear algebra. #ifndef EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H #define EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H // IWYU pragma: private #include "./InternalHeaderCheck.h" namespace Eigen { /** \class TensorVolumePatch * \ingroup CXX11_Tensor_Module * * \brief Patch extraction specialized for processing of volumetric data. * This assumes that the input has a least 4 dimensions ordered as follows: * - channels * - planes * - rows * - columns * - (optional) additional dimensions such as time or batch size. * Calling the volume patch code with patch_planes, patch_rows, and patch_cols * is equivalent to calling the regular patch extraction code with parameters * d, patch_planes, patch_rows, patch_cols, and 1 for all the additional * dimensions. */ namespace internal { traits<TensorVolumePatchOp<Planes, Rows, Cols, XprType>>; eval<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, Eigen::Dense>; nested<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, 1, typename eval<TensorVolumePatchOp<Planes, Rows, Cols, XprType>>::type>; } // end namespace internal template <DenseIndex Planes, DenseIndex Rows, DenseIndex Cols, typename XprType> class TensorVolumePatchOp : public TensorBase<TensorVolumePatchOp<Planes, Rows, Cols, XprType>, ReadOnlyAccessors> { … }; // Eval as rvalue TensorEvaluator<const TensorVolumePatchOp<Planes, Rows, Cols, ArgType>, Device>; } // end namespace Eigen #endif // EIGEN_CXX11_TENSOR_TENSOR_VOLUME_PATCH_H