{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 数据加载及处理\n", "\n", "`Ascend` `GPU` `CPU` `入门` `数据准备`\n", "\n", "[![](https://gitee.com/mindspore/docs/raw/r1.5/resource/_static/logo_modelarts.png)](https://authoring-modelarts-cnnorth4.huaweicloud.com/console/lab?share-url-b64=aHR0cHM6Ly9taW5kc3BvcmUtd2Vic2l0ZS5vYnMuY24tbm9ydGgtNC5teWh1YXdlaWNsb3VkLmNvbS9ub3RlYm9vay9tb2RlbGFydHMvcXVpY2tfc3RhcnQvbWluZHNwb3JlX2RhdGFzZXQuaXB5bmI=&imageid=65f636a0-56cf-49df-b941-7d2a07ba8c8c) [![](https://gitee.com/mindspore/docs/raw/r1.5/resource/_static/logo_notebook.png)](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/r1.5/tutorials/zh_cn/mindspore_dataset.ipynb) [![](https://gitee.com/mindspore/docs/raw/r1.5/resource/_static/logo_download_code.png)](https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/r1.5/tutorials/zh_cn/mindspore_dataset.py) [![](https://gitee.com/mindspore/docs/raw/r1.5/resource/_static/logo_source.png)](https://gitee.com/mindspore/docs/blob/r1.5/tutorials/source_zh_cn/dataset.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "MindSpore提供了部分常用数据集和标准格式数据集的加载接口,用户可以直接使用`mindspore.dataset`中对应的数据集加载类进行数据加载。数据集类为用户提供了常用的数据处理接口,使得用户能够快速进行数据处理操作。\n", "\n", "## 数据准备\n", "\n", "在NoteBook中执行以下命令,下载并解压数据集到指定位置。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "!mkdir ./datasets\n", "!wget -N https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/cifar-10-binary.tar.gz --no-check-certificate\n", "!wget -N https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/MNIST_Data.zip --no-check-certificate\n", "!unzip -d ./datasets -o MNIST_Data.zip\n", "!tar -zxvf cifar-10-binary.tar.gz -C ./datasets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 加载数据集\n", "\n", "下面的样例通过`Cifar10Dataset`接口加载CIFAR-10数据集,使用顺序采样器获取前5个样本。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import mindspore.dataset as ds\n", "\n", "DATA_DIR = \"./datasets/cifar-10-batches-bin\"\n", "sampler = ds.SequentialSampler(num_samples=5)\n", "dataset = ds.Cifar10Dataset(DATA_DIR, sampler=sampler)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 迭代数据集\n", "\n", "用户可以用`create_dict_iterator`创建数据迭代器,迭代访问数据,下面展示了对应图片的形状和标签。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Image shape: (32, 32, 3) , Label: 6\n", "Image shape: (32, 32, 3) , Label: 9\n", "Image shape: (32, 32, 3) , Label: 9\n", "Image shape: (32, 32, 3) , Label: 4\n", "Image shape: (32, 32, 3) , Label: 1\n" ] } ], "source": [ "for data in dataset.create_dict_iterator():\n", " print(\"Image shape: {}\".format(data['image'].shape), \", Label: {}\".format(data['label']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 自定义数据集\n", "\n", "对于目前MindSpore不支持直接加载的数据集,可以构造自定义数据集类,然后通过`GeneratorDataset`接口实现自定义方式的数据加载。\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "np.random.seed(58)\n", "\n", "class DatasetGenerator:\n", " def __init__(self):\n", " self.data = np.random.sample((5, 2))\n", " self.label = np.random.sample((5, 1))\n", "\n", " def __getitem__(self, index):\n", " return self.data[index], self.label[index]\n", "\n", " def __len__(self):\n", " return len(self.data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "其中用户需要自定义的类函数如下:\n", "\n", "- **\\_\\_init\\_\\_**\n", "\n", " 实例化数据集对象时,`__init__`函数被调用,用户可以在此进行数据初始化等操作。\n", "\n", " ```python\n", " def __init__(self):\n", " self.data = np.random.sample((5, 2))\n", " self.label = np.random.sample((5, 1))\n", " ```\n", "\n", "- **\\_\\_getitem\\_\\_**\n", "\n", " 定义数据集类的`__getitem__`函数,使其支持随机访问,能够根据给定的索引值`index`,获取数据集中的数据并返回。\n", "\n", " 其中`__getitem__`函数的返回值,需要是由numpy数组组成的元组(tuple),当返回单个numpy数组时可以写成 `return (np_array_1,)`。\n", "\n", " ```python\n", " def __getitem__(self, index):\n", " return self.data[index], self.label[index]\n", " ```\n", "\n", "- **\\_\\_len\\_\\_**\n", "\n", " 定义数据集类的`__len__`函数,返回数据集的样本数量。\n", "\n", " ```python\n", " def __len__(self):\n", " return len(self.data)\n", " ```\n", " \n", "定义数据集类之后,就可以通过`GeneratorDataset`接口按照用户定义的方式加载并访问数据集样本。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.36510558 0.45120592] [0.78888122]\n", "[0.49606035 0.07562207] [0.38068183]\n", "[0.57176158 0.28963401] [0.16271622]\n", "[0.30880446 0.37487617] [0.54738768]\n", "[0.81585667 0.96883469] [0.77994068]\n" ] } ], "source": [ "dataset_generator = DatasetGenerator()\n", "dataset = ds.GeneratorDataset(dataset_generator, [\"data\", \"label\"], shuffle=False)\n", "\n", "for data in dataset.create_dict_iterator():\n", " print('{}'.format(data[\"data\"]), '{}'.format(data[\"label\"]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## 数据处理及增强\n", "\n", "### 数据处理\n", "\n", "MindSpore提供的数据集接口具备常用的数据处理方法,用户只需调用相应的函数接口即可快速进行数据处理。\n", "\n", "下面的样例先将数据集随机打乱顺序,然后将样本两两组成一个批次。" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "data: [[0.36510558 0.45120592]\n", " [0.57176158 0.28963401]]\n", "label: [[0.78888122]\n", " [0.16271622]]\n", "data: [[0.30880446 0.37487617]\n", " [0.49606035 0.07562207]]\n", "label: [[0.54738768]\n", " [0.38068183]]\n", "data: [[0.81585667 0.96883469]]\n", "label: [[0.77994068]]\n" ] } ], "source": [ "ds.config.set_seed(58)\n", "\n", "# 随机打乱数据顺序\n", "dataset = dataset.shuffle(buffer_size=10)\n", "# 对数据集进行分批\n", "dataset = dataset.batch(batch_size=2)\n", "\n", "for data in dataset.create_dict_iterator():\n", " print(\"data: {}\".format(data[\"data\"]))\n", " print(\"label: {}\".format(data[\"label\"]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "其中,\n", "\n", "`buffer_size`:数据集中进行shuffle操作的缓存区的大小。\n", "\n", "`batch_size`:每组包含的数据个数,现设置每组包含2个数据。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "### 数据增强\n", "\n", "数据量过小或是样本场景单一等问题会影响模型的训练效果,用户可以通过数据增强操作扩充样本多样性,从而提升模型的泛化能力。\n", "\n", "下面的样例使用`mindspore.dataset.vision.c_transforms`模块中的算子对MNIST数据集进行数据增强。\n", "\n", "导入`c_transforms`模块,加载MNIST数据集。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "from mindspore.dataset.vision import Inter\n", "import mindspore.dataset.vision.c_transforms as c_vision\n", "\n", "DATA_DIR = './datasets/MNIST_Data/train'\n", "\n", "mnist_dataset = ds.MnistDataset(DATA_DIR, num_samples=6, shuffle=False)\n", "\n", "# 查看数据原图\n", "mnist_it = mnist_dataset.create_dict_iterator()\n", "data = next(mnist_it)\n", "plt.figure(figsize=(3,3))\n", "plt.imshow(data['image'].asnumpy().squeeze(), cmap=plt.cm.gray)\n", "plt.title(data['label'].asnumpy(), fontsize=20)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "定义数据增强算子,对数据集进行`Resize`和`RandomCrop`操作,然后通过`map`映射将其插入数据处理管道。\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "resize_op = c_vision.Resize(size=(200,200), interpolation=Inter.LINEAR)\n", "crop_op = c_vision.RandomCrop(150)\n", "transforms_list = [resize_op, crop_op]\n", "mnist_dataset = mnist_dataset.map(operations=transforms_list, input_columns=[\"image\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "查看数据增强效果。" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mnist_dataset = mnist_dataset.create_dict_iterator()\n", "data = next(mnist_dataset)\n", "plt.figure(figsize=(3,3))\n", "plt.imshow(data['image'].asnumpy().squeeze(), cmap=plt.cm.gray)\n", "plt.title(data['label'].asnumpy(), fontsize=20)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "想要了解更多可以参考编程指南中[数据增强](https://www.mindspore.cn/docs/programming_guide/zh-CN/r1.5/augmentation.html)章节。" ] } ], "metadata": { "kernelspec": { "display_name": "MindSpore", "language": "python", "name": "mindspore" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 4 }