《机器学习算法与实现 》深度学习
本帖最后由 dirty 于 2024-7-23 19:35 编辑<p> 本篇学习讲解深度学习。 </p>
<p> </p>
<p> 深度学习(Deep Leaming)是机器学习的一类方法,是一种使用包含复杂结构或由多歌变换构成的处理层对数据进行表征学习、高层抽象的算法。典型的深度学习模型包括卷积神经网络、深度置信网络、堆栈自编码网络、循环神经网络、生成网络等。本章重点介绍最主要的一类深度学习方法-卷积神经网络及其经典的网络架构。</p>
<p> 与常规神经网络不同,卷积神经网络的各层中的神经元是三维排列的:宽度、高度和深度。其中,宽度和高度很好理解,因为卷积本身就是一个二维模板,深度指的则是激活数据体的数量,不是整个网络的深度--网络的层数。卷积神经网络利用输入是图像的特点,将神经元设计为三个维度:宽度(Width)、高度(Height)度(Depth)。卷积神经网络通常包含如下几种层:卷积层(ConvolutionalLayer);池化层(Pooling Layer);全连接层(Fully Connected Layer)。</p>
<p> 卷积在 PyTorch 中有两种实现方式:第一种是 torch.nn.Conv2d(),第二种是 torch.nn.functional.conv2d()。这两种方式本质上相同,对输入的要求也相同。下面说明这两种方式。</p>
<p> 首先加载图像并显示,这里注意图片选择像素不要过大,这里自己选择200*200像素(书中250*250),将图片放在工程目录下。</p>
<pre>
<code>'''加载图像并显示'''
import numpy as np
import torch
from torch import nn
from torch.autograd import Variable
import torch.nn.functional as F
from PIL import Image
import matplotlib.pyplot as plt
#读入一幅灰度图像
im= Image.open('./cat.jpg').convert('L')
im =np.array(im, dtype='float32') #将其转换为矩阵
im =np.array(im, dtype='float32') #将其转换为矩阵
#可视化图像12
plt.imshow(im.astype('uint8'),cmap ='gray')
plt.rcParams['font.sans-serif']=['SimHei']
plt.title("输入的实例图像")
plt.show()</code></pre>
<div style="text-align: center;"></div>
<p> 下面定义卷积算子进行轮廓检测,代码与可视化边缘检测结果如下</p>
<div style="text-align: center;"></div>
<p> 下面用torch.nn.functional.conv2d操作相同图像,代码与结果如下。可以看到效果相同,通常使用nn.Conv2d()这种形式。</p>
<div style="text-align: center;"></div>
<p> </p>
<p> 卷积网络中另一个非常重要的结构是池化,这利用了图像的下采样不变性,即一幅图像变小后仍能看出其内容,而使用池化层能够减小图像尺寸,提高计算效率,且不会引入多余的参数。池化方式有多种,如最大值池化、均值池化等,在卷积网络中一般使用最大值池化。在 PyIorch 中,最大值池化的方式也有两种:一种是nn.functional.max_pool2d(),另一种是nn.MaxPoo12d(),它们对图像的输入要求与卷积对图像的输入要求相同。</p>
<p> 下面使用nn.MaxPool2d()的用法,代码与结果如下</p>
<div style="text-align: center;"></div>
<p> 下面使用nn.functional.max_pool2d()的用法,代码与结果如下.实际中通常使用nn.MaxPool2d()多些。</p>
<div style="text-align: center;"></div>
<p> </p>
<p> 在正式构建和训练模型前,先数据预处理和批量归一化,因为一般情况下模型的规模都较大,模型训练并不容易。尤其是一些非常复杂的模型,若不做特殊的数据处理,则很难收敛到好的结果这也是卷积网络能够训练到非常深的层的技术原因之一。</p>
<p> 过去十多年来,深度学习在图像目标识别、语音识别和自然语言处理等领域中的表现出色。在各类神经网络中,卷积神经网络得到了深入研究。书中介绍卷积神经网络的几种典型架构:LeNet5、AlexNet、VGG、GooglLeNet、ResNet、DenseNet等,让读者从原理、技术、技巧等多个维度认识神经网络,进而为后续的学习和研究奠定基础。</p>
<p> </p>
<p> 本篇的学习,对深度学习有更系统深入的理解,通过实践对深度学习运用有更深切感受。</p>
<p>谢谢分享,期待深入后续!</p>
页:
[1]