LCOV - code coverage report
Current view: top level - nntrainer-0.5.0/api/ccapi/include - dataset.h (source / functions) Hit Total Coverage
Test: nntrainer 0.5.0-0 nnstreamer/nntrainer.git#7135f75d29b46a8913396dc62973559febc0ff1d Lines: 2 2 100.0 %
Date: 2023-06-08 09:54:03 Functions: 0 0 -

          Line data    Source code
       1             : // SPDX-License-Identifier: Apache-2.0
       2             : /**
       3             :  * Copyright (C) 2020 Parichay Kapoor <pk.kapoor@samsung.com>
       4             :  *
       5             :  * @file   dataset.h
       6             :  * @date   14 October 2020
       7             :  * @see    https://github.com/nnstreamer/nntrainer
       8             :  * @author Jijoong Moon <jijoong.moon@samsung.com>
       9             :  * @author Parichay Kapoor <pk.kapoor@samsung.com>
      10             :  * @bug    No known bugs except for NYI items
      11             :  * @brief  This is dataset interface for c++ API
      12             :  *
      13             :  * @note This is experimental API and not stable.
      14             :  */
      15             : 
      16             : #ifndef __ML_TRAIN_DATASET_H__
      17             : #define __ML_TRAIN_DATASET_H__
      18             : 
      19             : #if __cplusplus >= MIN_CPP_VERSION
      20             : 
      21             : #include <functional>
      22             : #include <memory>
      23             : #include <string>
      24             : #include <vector>
      25             : 
      26             : #include <common.h>
      27             : 
      28             : namespace ml {
      29             : namespace train {
      30             : 
      31             : /**
      32             :  * @brief   Dataset generator callback type declaration
      33             :  */
      34             : typedef std::function<std::remove_pointer<ml_train_datagen_cb>::type>
      35             :   datagen_cb;
      36             : 
      37             : /**
      38             :  * @brief     Enumeration for dataset type
      39             :  */
      40             : enum class DatasetType {
      41             :   GENERATOR, /** Dataset with generators */
      42             :   FILE,      /** Dataset with files */
      43             :   DIR,       /** Dataset with directory */
      44             :   UNKNOWN    /** Unknown dataset type */
      45             : };
      46             : 
      47             : /**
      48             :  * @brief     Enumeration of data mode type
      49             :  */
      50             : enum class DatasetModeType {
      51             :   MODE_TRAIN = ML_TRAIN_DATASET_MODE_TRAIN, /** data for training */
      52             :   MODE_VALID = ML_TRAIN_DATASET_MODE_VALID, /** data for validation */
      53             :   MODE_TEST = ML_TRAIN_DATASET_MODE_TEST,   /** data for test */
      54             :   MODE_UNKNOWN                              /** data not known */
      55             : };
      56             : 
      57             : /**
      58             :  * @class   Dataset for class for input data
      59             :  * @brief   Dataset for read and manage data
      60             :  */
      61         122 : class Dataset {
      62             : public:
      63             :   /**
      64             :    * @brief     Destructor
      65             :    */
      66         122 :   virtual ~Dataset() = default;
      67             : 
      68             :   /**
      69             :    * @brief     set property
      70             :    * @param[in] values values of property
      71             :    * @details   Properties (values) is in the format -
      72             :    *  { std::string property_name, std::string property_val, ...}
      73             :    */
      74             :   virtual void setProperty(const std::vector<std::string> &values) = 0;
      75             : };
      76             : 
      77             : /**
      78             :  * @brief Create a Dataset object with given arguements
      79             :  *
      80             :  * @param type dataset type
      81             :  * @param properties property representations
      82             :  * @return std::unique_ptr<Dataset> created dataset
      83             :  */
      84             : std::unique_ptr<Dataset>
      85             : createDataset(DatasetType type,
      86             :               const std::vector<std::string> &properties = {});
      87             : 
      88             : /**
      89             :  * @brief Create a Dataset object
      90             :  *
      91             :  * @param type dataset type
      92             :  * @param path path to a file or folder
      93             :  * @param properties property representations
      94             :  * @return std::unique_ptr<Dataset> created dataset
      95             :  */
      96             : std::unique_ptr<Dataset>
      97             : createDataset(DatasetType type, const char *path,
      98             :               const std::vector<std::string> &properties = {});
      99             : 
     100             : /**
     101             :  * @brief Create a Dataset object
     102             :  *
     103             :  * @param type dataset type
     104             :  * @param cb callback
     105             :  * @param user_data user data
     106             :  * @param properties property representations
     107             :  * @return std::unique_ptr<Dataset> created dataset
     108             :  */
     109             : std::unique_ptr<Dataset>
     110             : createDataset(DatasetType type, datagen_cb cb, void *user_data = nullptr,
     111             :               const std::vector<std::string> &properties = {});
     112             : } // namespace train
     113             : } // namespace ml
     114             : 
     115             : #else
     116             : #error "CPP versions c++17 or over are only supported"
     117             : #endif // __cpluscplus
     118             : #endif // __ML_TRAIN_DATASET_H__

Generated by: LCOV version 1.16