Updated on 2022-03-13 GMT+08:00

AINeuralNetworkBuffer

Defines the general buffer of the NN. This class is defined in ai_tensor.h.

    class AINeuralNetworkBuffer : public AISimpleTensor
    {
    public:
        AINeuralNetworkBuffer()
        {
            data_type_ = 0;
            number_    = 1;
            channel_   = 1;
            height_    = 1;
            width_     = 1;
            name_      = "";
        };
     
        ~AINeuralNetworkBuffer() {};
        /*
       * @brief   Obtain the type name.
        */
        const char* const GetTypeName();

        /*
       @brief  Obtain the byte size.
        */
        uint32_t ByteSizeLong();

        /*
       @brief Initialization
        @param [in] tensor_desc  Tensor description
        */
        bool Init(const AITensorDescription &tensor_desc);
        
#if defined( __ANDROID__) || defined(ANDROID)
        /*
        * @brief   Serialize data to the buffer for cross-process data interaction.
        * @param [in] buffer   Address of the buffer to which the data is serialized, allocated by the caller
        * @param [in] size   Size of the buffer to which the data is output
        * @return SUCCESS   Success
        *         FAILED: failure. If the tensor does not support cross-process, this API does not need to be implemented and a failure message is returned.
        */
        AIStatus SerializeTo(void* buffer, uint32_t size_);

        /*
        * @brief   Deserialize data from the buffer to a tensor for cross-process data interaction.
        * @param [in] buffer  Size of the buffer to which the data is input
        * @param [in] size   Size of the buffer to which the data is input
        * @return SUCCESS   Success
        *         FAILED: failure. If the tensor does not support cross-process, this API does not need to be implemented and a failure message is returned.
        */
        AIStatus DeserializeFrom(const void* buffer, uint32_t size_);
#endif
        /*
        * @brief  Obtain the description.
        */
        static AITensorDescription GetDescription(
            const std::string &size = "0",const std::string &data_type="0",
            const std::string &number="0", const std::string &channel="0",
            const std::string &height="0", const std::string &width="0");

        /*
       @brief Create a tensor.
        */
        static std::shared_ptr<IAITensor> CreateTensor(const AITensorDescription& tensor_desc);

        /*
        @brief  Obtain the number.
        */
        int32_t GetNumber();

        /*
       @brief  Set the number.
        */
        void SetNumber(int32_t number);

        /*
        @brief  Obtain the number of channels.
        */
        int32_t GetChannel();

        /*
       @brief  Set the channel.
        */
        void SetChannel(int32_t channel);

        /*
       @brief  Obtain the height.
        */
        int32_t GetHeight();

        /*
       @brief  Set the height.
        */
        void SetHeight(int32_t height);

        /*
       @brief  Obtain the width.
        */
        int32_t GetWidth();

        /*
       @brief  Set the width.
        */
        void SetWidth(int32_t width);

        /*
       @brief  Obtain the data type.
        */
        int32_t GetData_type();

        /*
       @brief  Set the data type.
        */
        void SetData_type(int32_t data_type);

        /*
       @brief  Obtain the data type.
        */
        const std::string& GetName() const;

        /*
       @brief  Set the data type.
        */
        void SetName(const std::string& value);

    private:
        int32_t data_type_;
        int32_t number_;
        int32_t channel_;
        int32_t height_;
        int32_t width_;
        std::string name_;
    };