# 自定义数据增强报错args should be Numpy narray.Got<class tuple&gt

**1. MindSpore自定义数据增强算子**

切入到数据流水线中对数据进行处理

相关的API可以参考：[mindspore.dataset.map](https://www.mindspore.cn/docs/api/zh-CN/master/api_python/dataset/mindspore.dataset.Caltech256Dataset.html#mindspore.dataset.Caltech256Dataset.map)

自定义函数写的不对的时候会出现这个错误：

```
Exception thrown from PyFunc. TypeError: args should be Numpy narray. Got <class 'tuple'>.
```

打开脚本分析一下：

自定义的Crop操作

![](figures/7-16.png)

**2. 原因分析**

GeneratorDataset中存在两个数据列”LR”, “HR”，但是Crop类的\_\_call\_\_函数中除self外只有r入参sample，导致传入的数据类型转为tuple，与期望的numpy.ndarray不符合。

输入数据列（2个数据列）：

数据处理类的定义（仅接受单个数据列）：

![](figures/8-17.png)

**3. 解决办法**

修改\_\_call\_\_的入参为个数，除self外入参个数需要与input\_columns中的参数个数保持一致，忽略input\_columns时默认为全部的数据列。

可以参考下面修改成\_\_call\_\_方法的入参数量，同时确保\_\_call\_\_方法返回的是numpy组成的tuple对象

![](figures/9-18.png)

