在构建循环神经网络时,首先需要处理数据集。接下来需要读取数据,对其进行合理采样,即将数据集划分为若干子序列。采样后的数据进行one-hot编码后,即可输入循环神经网络进行学习。
数据集的采样主要分为两种方法,随机采样和顺序分区,接下来依次进行介绍。(本文基于mxnet框架构建,使用Time Machine数据集)
随机采样
随机采样只有每个批量内部一个时间步长度的值是顺序分布的。为更好的了解采样的代码,我们首先解释用到的各种参数。
参数说明
- num_steps:时间步,即生成的每个序列连续多少个值。
- batch_size:批量大小,即生成多少批数据
- corpus:全体语料
- num_subseqs:生成子列数量(特征-标签对)
函数说明
- random.shuffle(),标准类库方法,用于将内容打乱。
def seq_data_iter_random(corpus, batch_size, num_steps): #@save
"""使用随机抽样生成一个小批量子序列"""
# 从随机偏移量开始对序列进行分区,随机范围包括num_steps-1
corpus = corpus[random.randint(0, num_steps - 1):]
# 减去1,是因为我们需要考虑标签
n