对dataset模块dataset的部分注释

举报
颜文军 发表于 2021/10/31 20:10:19 2021/10/31
【摘要】 对ccsrc/minddata/dataset/include/dataset的注释dataset模块介绍此模块提供加载和处理各种常见数据集的API,如MNIST、CIFAR-10、CIFAR-100、VOC、COCO、ImageNet、CelebA、CLUE等。它还支持标准格式的数据集,包括 MindRecord、TFRecord、Manifest等。用户还可以使用此模块定义自...

对ccsrc/minddata/dataset/include/dataset的注释
dataset模块介绍
此模块提供加载和处理各种常见数据集的API,如MNIST、CIFAR-10、CIFAR-100、VOC、COCO、ImageNet、CelebA、CLUE等。它还支持标准格式的数据集,包括 MindRecord、TFRecord、Manifest等。用户还可以使用此模块定义自己的数据集。此外,该模块还提供了加载时采样数据的API。
这里的主要作用提高模型的训练性能,数据集辅助类,管理内存数据库DataSet和其数据表DataTable集合。DataSet是数据集,它可以包含多张数据表(DataTable)。这一点就像是EXCEL工作簿与工作表的关系。
DataSet相当于是内存中的数据库,在数据增加删除查询上拥有速度与方便性上的优势,但是它和正则表达式一样。
这个类可以极大简化DataSet的操作方法,凡是需要维护批量数据的场合都可以用它。
详见:官方dataset数据集
DataHelper,一个通用的数据帮助类,这里是mind数据集包含的数据集数据助手,用于创建一个通用的处理数据的类。
知识浅薄,还有许多未理解之处,欢迎各位纠正、讨论
路径:mindsspore/ccsrc/minddata/dataset/include/dataset

#include "minddata/dataset/include/dataset/data_helper.h"
//mind数据集包含的数据集数据助手
//DataHelper,一个通用的数据帮助类

#include <algorithm>
//算法(Algorithm)为一个计算的具体步骤,常用于计算、数据处理和自动推理。C++ 算法库(Algorithms library)为 C++ 程序提供了大量可以用来对容器及其它序列进行算法操作的函数。
//这些组件可以为函数或函数模板,大部份由头文件 <algorithm> 提供,一小部份位于 <numeric>、<cstdlib> 中。
#include <iostream>//输入输出流
#include <map>
//map 是一种关联容器, 提供一对一的关联, 关联的形式为: KEY----VALUE(键值对),另外关键字不能重复。
//map 也可看做是 关键字映射的集合, 即,map中不可出现重复的关键字,每条映射的关键字都是不同的。

#include "minddata/dataset/util/json_helper.h"//在当前文件下导入头文件
#include "include/api/status.h"

namespace mindspore {//命名空间mindspore
namespace dataset {//命名空间数据集
// Create a numbered json file from image folder
//从图像文件夹创建编号的json文件
Status DataHelper::CreateAlbumIF(const std::vector<char> &in_dir, const std::vector<char> &out_dir){
  //建立矢量字符文件 在目录中和输出方向的常量
  auto jh = JsonHelper();
  return jh.CreateAlbum(CharToString(in_dir), CharToString(out_dir));
  //字符到字符串 图表输入目录,图表输出目录
  //创建文件 	返回文件
}

// A print method typically used for debugging
//通常用于调试的打印方法
void DataHelper::Print(std::ostream &out) const {//输出流
  out << "  Data Helper"
      << "\n";
}
///状态数据助手 更新数组如果数据类型是后面的就将数据进行相应处理并返回数据再更新数组
//输入文件char类型存入容器char键值char 	输出文件char
//vector 本质上是一个动态数组,它的元素是连续存储的,这意味着不仅可以通过迭代器访问元素,还可以使用指向元素的常规指针来对其进行访问。还可以将指向 vector 元素的指针传递给任何需要指向数组元素的指针的函数。
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<std::vector<char>> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();//Json帮助程序 auto有两种用途:自动类型推断和返回值占位。 
  //auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。
  return jh.UpdateArray(CharToString(in_file), CharToString(key), VectorCharToString(value), CharToString(out_file));
  //制图返回更新后的数组
}

//输入数据类型为char 建立char容器及key bool类型转化 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<bool> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器keyint8_t类型(8进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<int8_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器keyuint8_t类型(无符号8进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<uint8_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器keyint16_t类型(16进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<int16_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器keyuint16_t类型(无符号16进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<uint16_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器keyint32_t类型(32进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<int32_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key输出uint32_t类型(无符号32进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<uint32_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key int64_t类型(64进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<int64_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key uint64_t类型(无符号64进制整型数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<uint64_t> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key float类型(单精度浮点数)与值来转化 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<float> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key double类型(双精度浮点数)与值 输出char
Status DataHelper::UpdateArrayIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<double> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateArray(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新后的数组
}

//输入数据类型为char 建立容器key char类型(字符)与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key,
                                 const std::vector<char> &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), CharToString(value), CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器key bool类型(布尔类型) 常量布尔值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, 
                                const bool &value, const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量int8_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, 
                                const int8_t &value,const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量uint8_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const uint8_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量int16_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const int16_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量uint16_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const uint16_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量int32_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const int32_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量uint32_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const uint32_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量int64_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const int64_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量uint64_t类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const uint64_t &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量float类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const float &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量double类型与值 输出char
Status DataHelper::UpdateValueIF(const std::vector<char> &in_file, const std::vector<char> &key, const double &value,
                                 const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.UpdateValue(CharToString(in_file), CharToString(key), value, CharToString(out_file));
  //返回更新值
}

//输入数据类型为char 建立容器char和key 常量char类型与值 输出char
Status DataHelper::RemoveKeyIF(const std::vector<char> &in_file, const std::vector<char> &key,
                               const std::vector<char> &out_file) {
  auto jh = JsonHelper();
  return jh.RemoveKey(CharToString(in_file), CharToString(key), CharToString(out_file));
  //删除密钥
}

//输入常量无符号字符张量地址 常量张量大小 地址 常量缓冲区大小
size_t DataHelper::DumpData(const unsigned char *tensor_addr, const size_t &tensor_size, void *addr,
                            const size_t &buffer_size) {
  auto jh = JsonHelper();
  return jh.DumpData(tensor_addr, tensor_size, addr, buffer_size);
  //返回转储数据包括张量地址 张量大小 地址 缓冲区大小
}

}  // namespace dataset
}  // namespace mindspore

以上即为本篇的所有内容,因学识与能力有限,如有不足之处,请多多包涵与指教

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。