d2l的一些库解析,用到什么补充什么【深度学习+d2l+torch】

图像查看与显示

因为全文都是使用jupyter打开的,所以会使用一下%matplotlib inline
所以先简单解释一下%matplotlib inline

%matplotlib

使用%matplotlib命令可以将matplotlib的图表直接嵌入到Notebook之中,或者使用指定的界面库显示图表,它有一个参数指定matplotlib图表的显示方式。inline表示将图表嵌入到Notebook中。
python提供了很多%magic行命令,可以用%magic查看都有哪些命令,在命令后添加?可以查看命令具体作用
d2l的一些库解析,用到什么补充什么【深度学习+d2l+torch】d2l的一些库解析,用到什么补充什么【深度学习+d2l+torch】
当然,这里需要提一下的是,这些内置magic在pycharm里是不支持的,所以是不能在pycharm中使用

这个说完了,接下来进入正题

set_figsize()

首先我们来看李沐老师的d2l包

def set_figsize(figsize=(3.5, 2.5)):
    """Set the figure size for matplotlib.

    Defined in :numref:`sec_calculus`"""
    use_svg_display()
    d2l.plt.rcParams['figure.figsize'] = figsize

这里调用了一个方法,分别是use_svg_display(),对一个字典进行了赋值
d2l的定义如下:

import sys
d2l = sys.modules[__name__]

其实就是一个参数存储与传递的作用
然后use_svg_display()就在这个函数上当,简单来说就是进行一下设置,

from matplotlib_inline import backend_inline

def use_svg_display():
    """Use the svg format to display a plot in Jupyter.

    Defined in :numref:`sec_calculus`"""
    backend_inline.set_matplotlib_formats('svg')

全部的作用也就是设置成矢量图罢了
就是设置matplotlib的formats

d2l.Image.open()

Image.open()大家用的比较多的是PIL的Image.open,实际上也是一个意思,他只是吧Image导入进来了,也就是说其实去掉d2l也能正常运行,只是要import一下PIL包而已,同样的是plt.show(),李沐老师所作的只是帮我们进行了一下import。
d2l的一些库解析,用到什么补充什么【深度学习+d2l+torch】
d2l的一些库解析,用到什么补充什么【深度学习+d2l+torch】
所以运行结果是一样的

之后我们解析一下show_images()方法:

show_images()

批量显示图片是plt一个比较常用的功能了,掌握一下也是挺好的,这种偏向于功能和基础向的东西李沐老师一般是不喜欢说的

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):
    """Plot a list of images.

    Defined in :numref:`sec_utils`"""
    figsize = (num_cols * scale, num_rows * scale)
    _, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)
    axes = axes.flatten()
    for i, (ax, img) in enumerate(zip(axes, imgs)):
        try:
            img = d2l.numpy(img)
        except:
            pass
        ax.imshow(img)
        ax.axes.get_xaxis().set_visible(False)
        ax.axes.get_yaxis().set_visible(False)
        if titles:
            ax.set_title(titles[i])
    return axes

参数需要五个,两个含有默认值
imgs是图片的输入list,然后就是高宽个数
然后解释一下plt.subplot的作用以及用法
简单来说,这个函数就是把figure分为row*cols个子图,写法也比较多样。
比如

plt.subplot(232)
plt.subplot(2,3,2)
#这两者作用是相同的,简单来说就是把figure分为2*3,同时选择展平之后的第2个位置
matpltlib.pyplot.figure(
num = None,               # 设定figure名称。系统默认按数字升序命名的figure_num(透视表输出窗口)e.g. “figure1”。可自行设定figure名称,名称或是INT,或是str类型;
figsize=None,             # 设定figure尺寸。系统默认命令是rcParams["figure.fig.size"] = [6.4, 4.8],即figure长宽为6.4 * 4.8;
dpi=None,                 # 设定figure像素密度。系统默命令是rcParams["sigure.dpi"] = 100;
facecolor=None,           # 设定figure背景色。系统默认命令是rcParams["figure.facecolor"] = 'w',即白色white;
edgecolor=None, frameon=True,    # 设定要不要绘制轮廓&轮廓颜色。系统默认绘制轮廓,轮廓染色rcParams["figure.edgecolor"]='w',即白色white;
FigureClass=<class 'matplotlib.figure.Figure'>,   # 设定使不使用一个figure模板。系统默认不使用;
clear=False,                     # 设定当同名figure存在时,是否替换它。系统默认False,即不替换。
**kwargs)

那么plt.subplots呢?
很简单,就是一次性得到所有层和画布
有两个返回值,一个是就是画布fig,第二个就是ax,也就是块
所以就很容易理解了,李沐老师通过一个循环进行了每个块的赋值,zip合并,然后增加个enumerate只是为了多产生一个i进行计数。
这部分的笔记我是结合数据增广那一章来的,所以就是简单进行一些转换吧。

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年3月10日 上午8:49
下一篇 2023年3月10日 上午8:50

相关推荐