# 数据增强报错：Use Decode\(\) for encoded data or ToPIL\(\)

**1. 使用GeneratorDataset进行数据加载**

再基于map操作使用py\_transforms做数据增强

关于[py\_transform: mindspore-dataset-vision-py-transforms](https://www.mindspore.cn/docs/api/zh-CN/master/api_python/mindspore.dataset.vision.html#mindspore-dataset-vision-py-transforms)

**2. 报出了如下错误**

![](figures/4-13.png)

TypeError: img should be PIL image. Got <class 'numpy.ndarray'\>. Use Decode\(\) for encoded data or ToPIL\(\) for decoded data.

打开脚本分析一下：

![](figures/5-14.png)

**3. 原因分析**

基于GeneratorDataset读取完数据，data 和 label字段转为numpy.ndarray，但是dataset.map中使用的resize\_op，是py\_transform的算子，py\_transform的算子是基于PIL库实现的，其要求接收的数据类型为PIL.Image，因此对于输入的numpy类型数据，就会报出这个错误。

**4. 解决办法**

如果需要使用py\_transforms算子进行处理的话，需要使用ToPIL算子转为PIL Image对象，然后才能Resize操作，并且在处理完后，也需要显示调用下 ToTensor转为Tensor。新增如下的to\_pil操作即可

![](figures/6-15.png)

