写点什么

《PyTorch 深度学习实战》学习笔记

作者:IT蜗壳-Tango
  • 2023-01-17
    江苏
  • 本文字数:745 字

    阅读完需:约 2 分钟

03 | NumPy(下):深度学习中的常用操作

在这节课程之中,老师主要通过一个图像分类的例子演示了 NumPy 在实际工作中的应用。


数据加载

这个阶段我们要做的就是把训练数据读进来,然后给模型训练使用。训练数据不外乎这三种:图片、文本以及类似二维表那样的结构化数据。

我们在读入数据这一块,都会先把数据转换成 NumPy 的数组,然后再进行后续的一系列操作。

对于图片的处理,我们一般会使用 Pillow 与 OpenCV 这两个模块。

在 PyTorch 中,很多图片的操作都是基于 Pillow 的,所以当使用 PyTorch 编程出现问题,或者要思考、解决一些图片相关问题时,要从 Pillow 的角度出发。

Pillow 方式

from PIL import Imageim = Image.open('./img/logo.png')im.size
复制代码


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

import numpy as np
im_pillow = np.asarray(im)
im_pillow.shape
复制代码


openCV 的方式


import cv2im_cv2 = cv2.imread('./img/logo.png')type(im_cv2)
im_cv2.shape
复制代码

我们读入后的数组的最后一个维度是 3,这是因为图片的格式是 RGB 格式,表示有 R、G、B 三个通道。

索引与切片

和 Python 中的切片以及索引是一样的。


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

zeros = np.zeros((im_pillow.shape[0], im_pillow.shape[1], 1))zeros.shape
复制代码


数组的拼接

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

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

增加维度的第二个方法就是直接赋值,其实我们完全可以生成一个与 im_pillow 形状完全一样的全 0 数组,然后将每个通道的数值赋值为 im_pillow_c1、im_pillow_c2 与 im_pillow_c3 就可以了。

可以使用 matplotlib 将修改后的 logo 绘图出来,它是 NumPy 的绘图库。


发布于: 刚刚阅读数: 3
用户头像

一个日语专业的程序猿。 2017-09-10 加入

【坐标】无锡 【软件技能】Java,C#,Python 【爱好】炉石传说 【称号】InfoQ年度人气作者,Intel OpenVINO领航者联盟成员 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
《PyTorch 深度学习实战》学习笔记_Python_IT蜗壳-Tango_InfoQ写作社区