Help Center/
    
      
      Atlas 300 Application (Model 3000)/
      
      
        
        
        Matrix API Reference/
        
        
        Model Manager APIs (C++ Language)/
        
        
        Other Compilation Dependent APIs/
        
      
      AITensorFactory
    
  
  
    
        Updated on 2022-03-13 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
AITensorFactory
Tensor factory class, which is used to create tensors. The AITensorFactory class is defined in ai_tensor.h.
    class AITensorFactory
    {
    public:
        static AITensorFactory* GetInstance();
        /*
        * @brief  Create a tensor by using parameters, including memory allocation
       * @param [in] tensor_desc  Description that contains the tensor parameters
       * @return shared_ptr<IAITensor>  Pointer to the created tensor. If the creation fails, a null pointer is returned.
        */
        std::shared_ptr<IAITensor> CreateTensor(const AITensorDescription &tensor_desc);
        /*
        * @brief  Create a tensor by using the type, not involving memory allocation. It is used in non-pre-allocation mode.
        * @param [in] type  Type during tensor registration
        * @return shared_ptr<IAITensor>  Pointer to the created tensor. If the creation fails, a null pointer is returned.
        */
        std::shared_ptr<IAITensor> CreateTensor(const std::string &type);
     
       
#if defined( __ANDROID__) || defined(ANDROID)
        /*
        * @brief   Creates a tensor by using parameters and buffers. The content is obtained from buffer deserialization.
       * @param [in] tensor_desc  Description that contains the tensor parameters
        * @param [in] buffer   Existing data buffer
        * @param [in] size   Buffer size
       * @return shared_ptr<IAITensor>  Pointer to the created tensor. If the creation fails, a null pointer is returned.
        */
        std::shared_ptr<IAITensor> CreateTensor(const AITensorDescription &tensor_desc,
            const void *buffer, const int32_t size);
#else
        std::shared_ptr<IAITensor> CreateTensor(const AITensorDescription &tensor_desc,
            void *buffer, int32_t size);
#endif
    
        /*
        * @brief   Register a tensor.
        * @param [in] tensor_desc  Tensor description
        * @param [in] create_func   Function for creating a tensor
        */
        AIStatus RegisterTensor(const AITensorDescription &tensor_desc,
            CREATE_TENSOR_FUN create_func);
        AIStatus RegisterTensor(const string tensor_str, CREATE_TENSOR_FUN create_func)
        {
            // Add a lock to prevent multi-thread concurrency.
            AITensorDescription tensor_desc;
            tensor_desc.set_type(tensor_str);
            return RegisterTensor(tensor_desc, create_func);
        }
       /*
        * @brief  Unregister a tensor.
        * @param [in] tensor_desc  Tensor description
        */
        AIStatus UnRegisterTensor(const AITensorDescription &tensor_desc);
        AIStatus UnRegisterTensor(const string tensor_str)
        {
            AITensorDescription tensor_desc;
            tensor_desc.set_type(tensor_str);
            return UnRegisterTensor(tensor_desc);
        }
        /*
        * @brief  Obtain the list of all tensors.
        * @param [out] tensor_desc_list  Description list of output tensors
        */
        void GetAllTensorDescription(AITensorDescriptionList &tensor_desc_list);
        /*
        * @brief  Obtain the tensor description.
        */
        AIStatus GetTensorDescription(const std::string& tensor_type_name,
            AITensorDescription &tensor_desc);
    private:
        std::map<std::string, AITensorDescription> tensor_desc_map_;
        std::map<std::string, CREATE_TENSOR_FUN> create_func_map_;
        std::mutex tensor_reg_lock_;
    };
   Parent topic: Other Compilation Dependent APIs
  
 Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
                The system is busy. Please try again later.
                
            
        For any further questions, feel free to contact us through the chatbot.
Chatbot