You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.6 KiB
92 lines
2.6 KiB
//=============================================================================
|
|
//
|
|
// Copyright (c) 2015-2016 Qualcomm Technologies, Inc.
|
|
// All Rights Reserved.
|
|
// Confidential and Proprietary - Qualcomm Technologies, Inc.
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef _ITENSOR_FACTORY_HPP
|
|
#define _ITENSOR_FACTORY_HPP
|
|
|
|
#include "ITensor.hpp"
|
|
#include "TensorShape.hpp"
|
|
#include "ZdlExportDefine.hpp"
|
|
#include <istream>
|
|
|
|
namespace zdl {
|
|
namespace DlSystem
|
|
{
|
|
class ITensor;
|
|
class TensorShape;
|
|
}
|
|
}
|
|
|
|
namespace zdl { namespace DlSystem
|
|
{
|
|
|
|
/** @addtogroup c_plus_plus_apis C++
|
|
@{ */
|
|
|
|
/**
|
|
* Factory interface class to create ITensor objects.
|
|
*/
|
|
class ZDL_EXPORT ITensorFactory
|
|
{
|
|
public:
|
|
virtual ~ITensorFactory() = default;
|
|
|
|
/**
|
|
* Creates a new ITensor with uninitialized data.
|
|
*
|
|
* The strides for the tensor will match the tensor dimensions
|
|
* (i.e., the tensor data is contiguous in memory).
|
|
*
|
|
* @param[in] shape The dimensions for the tensor in which the last
|
|
* element of the vector represents the fastest varying
|
|
* dimension and the zeroth element represents the slowest
|
|
* varying, etc.
|
|
*
|
|
* @return A pointer to the created tensor or nullptr if creating failed.
|
|
*/
|
|
virtual std::unique_ptr<ITensor>
|
|
createTensor(const TensorShape &shape) noexcept = 0;
|
|
|
|
/**
|
|
* Creates a new ITensor by loading it from a file.
|
|
*
|
|
* @param[in] input The input stream from which to read the tensor
|
|
* data.
|
|
*
|
|
* @return A pointer to the created tensor or nullptr if creating failed.
|
|
*
|
|
*/
|
|
virtual std::unique_ptr<ITensor> createTensor(std::istream &input) noexcept = 0;
|
|
|
|
/**
|
|
* Create a new ITensor with specific data.
|
|
* (i.e. the tensor data is contiguous in memory). This tensor is
|
|
* primarily used to create a tensor where tensor size can't be
|
|
* computed directly from dimension. One such example is
|
|
* NV21-formatted image, or any YUV formatted image
|
|
*
|
|
* @param[in] shape The dimensions for the tensor in which the last
|
|
* element of the vector represents the fastest varying
|
|
* dimension and the zeroth element represents the slowest
|
|
* varying, etc.
|
|
*
|
|
* @param[in] data The actual data with which the Tensor object is filled.
|
|
*
|
|
* @param[in] dataSize The size of data
|
|
*
|
|
* @return A pointer to the created tensor
|
|
*/
|
|
virtual std::unique_ptr<ITensor>
|
|
createTensor(const TensorShape &shape, const unsigned char *data, size_t dataSize) noexcept = 0;
|
|
};
|
|
|
|
}}
|
|
|
|
/** @} */ /* end_addtogroup c_plus_plus_apis C++ */
|
|
|
|
#endif
|
|
|