问题描述:

normalize的目的是什么?

为什么要有两次rescale呢?一次rescale=1/255 还有一次rescale_nml =1/0.3081,这两次为什么不合并起来呢?shift也是同样的问题
这里的rescale_nml=1/0.3081和下面shift_nml=-1*0.1307/0.3081,这里的小数0.3081和0.3081是怎么得出的呢?
目前还有一个问题,就是这个MNIST的数据集,它的标准差和均值是怎么算出来的呢?
解决方案:
在咱们MindSpore官网中有教程示例,解释了对图片数据操作的目的,给您参考,如果有使用上的问题,欢迎继续提问。
实现一个图片分类应用 — MindSpore master documentation
rescale:一般用于将[0, 255]的取值归一化至 [0.0, 1.0]
normalize: 一般用于图像标准化,公式为:

你上面代码的意思:

// 标准化: 0.3081是标准差,0.1307是均值

// 归一化至 [0.0, 1.0]
关于更多标准化的知识,你可以参考如下:
CNN 入门讲解:什么是标准化(Normalization)? - 知乎
我理解这个是数据本身提供/组织/个人已经计算出来了,然后大家就这样用了。
因为只要数据集确定,这个均值 & 标准差 就不会再变了。