问题描述
mxnet的transforms.ToTensor()实例可以用来改变数据的布局,将最后一维移到最前一维,从(h, w, c)变为(c, h, w)。
但是,为什么mxnet要这样在“加载”和“训练”数据时,使用不一样的布局呢?不会多此一举吗?
参考
mxnet 中提供了直接从目录中读取数据并进行训练的 API 这里使用的API如下。
这里使用了两个数据集,分别代表 train、validation。
需要注意的是,由于 数据中,使用的图像数据集,其数值在(0, 255)之间。同时,mxnet 用 opencv 来处理图像的加载,其图像的数据 layout 是(H,W,C),而 mxnet 用来训练的数据需要是(C,H,W)的,因此需要对数据做一些转换。另外,train 数据集做了一定的数据预处理(旋转、明暗度),用于进行数据增广,也做了数据打乱(shuffle),而 validation则不需要做类似的变换。
ToTensor这个操作会转换数据的 layout,因此要放在最后面。
版权声明:本文为CSDN博主「_dwSun_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dvd_sun/article/details/105799861