July 2025
Beginner to intermediate
444 pages
6h 20m
Chinese
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
前面几章向大家介绍了序列数据。你看到了如何预测数据,首先是使用统计方法,然后是使用深度神经网络的基本 ML 方法。你还探索了如何调整模型的超参数以获得更好的性能。
在本章中,你将学习使用卷积神经网络和递归神经网络来进一步提高序列数据预测能力的其他技术。
在第 3 章 中,我们向你介绍了卷积,即在图像上通过二维(2D)滤波器来修改图像并提取潜在特征。随着时间的推移,神经网络学会了哪些滤波器值能够有效地将像素所做的修改与其标签相匹配,从而有效地从图像中提取特征。同样的技术也可应用于数值时间序列数据,但有一点需要修改:卷积将是一维(1D)而非二维。
例如,考虑图 11-1 中的数字序列。
一维卷积的操作方法如下。将卷积视为 1 × 3 滤波器,滤波器值分别为 -0.5、1 和 -0.5。在这种情况下,序列中的第一个值将丢失,第二个值将从 8 变为-1.5(见图 11-2)。
然后,滤波器将跨过这些值,一边计算新值,一边跨过这些值。例如,在下一次跨步中,15 将转换为 3(见图 11-3)。
使用这种方法,我们可以提取数值之间的模式,并学习成功提取这些模式的滤波器,这与对图像中的像素进行卷积提取特征的方法基本相同。在这种情况下,虽然没有标签,但可以学习到使整体损失最小的卷积。
在编码卷积之前, ,你需要使用滑动窗口技术创建一个数据集,如第 10 章所示。本书的 GitHub 页面提供了相关代码。
有了数据集之后,你就可以在之前的密集层之前添加一个卷积层。下面是代码,我们将逐行查看:
classCNN1D(nn.Module):def__init__(self,input_size):super(CNN1D,self).__init__()self.conv1=nn.Conv1d(in_channels=1,out_channels=128,kernel_size=3,padding=1)conv_output_size=input_size# Same padding maintains input sizeself.relu=nn.ReLU()self.flatten=nn.Flatten()self.dense1=nn.Linear(128*conv_output_size,28)self.dense2=nn.Linear(28,10)self.dense3=nn.Linear(10,
Read now
Unlock full access