《PyTorch 深度学习实战》学习笔记
03 | NumPy(下):深度学习中的常用操作
在这节课程之中,老师主要通过一个图像分类的例子演示了 NumPy 在实际工作中的应用。
数据加载
这个阶段我们要做的就是把训练数据读进来,然后给模型训练使用。训练数据不外乎这三种:图片、文本以及类似二维表那样的结构化数据。
我们在读入数据这一块,都会先把数据转换成 NumPy 的数组,然后再进行后续的一系列操作。
对于图片的处理,我们一般会使用 Pillow 与 OpenCV 这两个模块。
在 PyTorch 中,很多图片的操作都是基于 Pillow 的,所以当使用 PyTorch 编程出现问题,或者要思考、解决一些图片相关问题时,要从 Pillow 的角度出发。
Pillow 方式

们只需要利用 NumPy 的 asarray 方法,就可以将 Pillow 的二进制数据转换为 NumPy 的数组格式。

openCV 的方式
我们读入后的数组的最后一个维度是 3,这是因为图片的格式是 RGB 格式,表示有 R、G、B 三个通道。
索引与切片
和 Python 中的切片以及索引是一样的。

获得了每个通道的数据,接下来就需要生成一个全 0 数组,该数组要与 im_pillow 具有相同的宽高。

数组的拼接
一下是三个通道的数据以及形状

由于维度的不同,我们需要使用 np.newaxis 这个方法来扩展一个维度出来

增加维度的第二个方法就是直接赋值,其实我们完全可以生成一个与 im_pillow 形状完全一样的全 0 数组,然后将每个通道的数值赋值为 im_pillow_c1、im_pillow_c2 与 im_pillow_c3 就可以了。
可以使用 matplotlib 将修改后的 logo 绘图出来,它是 NumPy 的绘图库。

版权声明: 本文为 InfoQ 作者【IT蜗壳-Tango】的原创文章。
原文链接:【http://xie.infoq.cn/article/d687f86fca35757a9cd8887b2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论