简介:循环神经网络(RNN)主要被用于处理序列相关的问题,比如在自然语言领域应用循环神经网络的情况就较多;循环神经网络也可以用于解决分类问题,虽然在图片特征的提取上没有卷积神经网络那样强大,但是本章仍然会使用循环神经网络来解决图片分类的问题,并主要讲解循环神经网络的工作机制和原理。
1.循环神经网络入门
之前讲到,卷积神经网络有几个特点:首先,对于一个已经搭建好的卷积神经网络模型,它的输入数据的维度是固定的,比如在处理图片分类问题时输入的图片大小是固定的;其次卷积神经网络模型最后输出的数据的维度也是固定的,比如在图片分类问题中我们最后得到模型的输出结果数量;最后,卷积神经网络模型的层次结构也是固定不变的。但是循环神经网络与之不同,因为在循环神经网络中循环单元可以随意控制输入数据及输出数据的数量,具有非常大的灵活性。
可以将一对一的网络结构看作一个简单的卷积神经网络模型,固定维度的输入和固定维度的输出。在一对多的网络结构中引入了循环单元,通过一个输入得到数量不等的输出。多对多的网络结构同样是一种循环模式,通过数量不等的输入得到数量不等的输出。
如图是循环神经网络的网络简化模型,X是整个模型的输入层,RNN代表循环神经网络中的循环层,Y是整个模型的输出层。图中用最简单的方式诠释了循环神经网络中的循环过程,通过不断地对自身的网络结构进行复制来构造不同的循环神经网络模型。
虽然循环神经网络已经能够很好的对输入的序列数据进行处理,但它有一个弊端,就是不能进行长期记忆,其带来的影响就是如果近期输入的数据发生了变化,则会对当前的输出结果产生重大影响。为了避免这种情况的出现,研究者开发了LSTM类型的循环神经网络模型。
2.PyTorch之循环神经网络实战
首先搭建循环神经网络模型;
构建循环层使用的是torch.nn.RNN类,在这个类中使用的几个比较重要的参数如下:
【1】input_size:用于指定输入数据的特征数。
【2】hidden_size:用于指定最后隐藏层的输出特征数。
【3】num_layers:用于指定循环层堆叠的数量,默认会使用1。
【4】bias:这个值默认是True,如果我们将其指定为False,就代表我们在循环层中不再使用偏置参与运算。
【5】batch_first:在我们的循环神经网络模型中输入层和输出层用到的数据的默认维度是(seq,batch,feature),其中,seq为序列的长度,batch为数据批次的数量,feature为输入或输出的特征数。如果我们将该参数指定为True,那么输入层和输出层的数据维度将重新对应为(batch,seq,feature)。
然后还是对模型进行10次训练;
然后对结果进行测试。
**总结:**循环神经网络模型目前主要应用于自然语言处理领域,不过在计算机视觉相关问题上也能够看到循环神经网络的身影。
第十章 循环神经网络
最新推荐文章于 2024-07-12 14:57:23 发布