减少深度学习模型的输入维度
Reducing input dimensions for a deep learning model
我正在学习深度学习课程,我有一个用 keras 构建的模型。在对分类数据进行数据预处理和编码之后,我得到一个形状为 (12500,)
的数组作为模型的输入。此输入使模型训练过程变慢且滞后。有没有一种方法可以最小化输入的维度?
输入分类为地理坐标、天气信息、时间、距离,我正在尝试预测两个地理坐标之间的旅行时间。
原始数据集有 8 个特征,其中 5 个是分类特征。我使用 onehot 编码对上述分类数据进行编码。地理坐标有 6000 类,天气 15 类时间有 96 类。同样,在使用 onehot 编码进行编码后,我得到了一个形状为 (12500,)
的数组作为模型的输入。
你可以用PCA做降维。
它删除了相关变量并确保数据中存在高方差。
当类别数量很大时,one-hot encoding 效率太低。一个极端的例子是处理自然语言的句子:在这个任务中,词汇量通常有 100k 甚至更多。显然将一个10个单词的句子翻译成一个[10, 100000]
矩阵,几乎所有的都是零,会浪费内存。
研究人员使用的是嵌入层,它学习分类特征的密集表示。在单词的情况下,它被称为 word embedding,例如word2vec。这种表示要小得多,大约 100 维,并且使网络的其余部分能够有效地处理 100 维输入向量,而不是 100000 维向量。
在 keras 中,它是由一个 Embedding
层实现的,我认为它非常适合您的 geo
和 time
功能,而其他人可能可以很好地使用 one-hot编码。这意味着您的模型不再是 Sequential
,而是具有多个输入,其中一些通过嵌入层。主要模型将采用学习表示的串联并进行回归推理。
我正在学习深度学习课程,我有一个用 keras 构建的模型。在对分类数据进行数据预处理和编码之后,我得到一个形状为 (12500,)
的数组作为模型的输入。此输入使模型训练过程变慢且滞后。有没有一种方法可以最小化输入的维度?
输入分类为地理坐标、天气信息、时间、距离,我正在尝试预测两个地理坐标之间的旅行时间。
原始数据集有 8 个特征,其中 5 个是分类特征。我使用 onehot 编码对上述分类数据进行编码。地理坐标有 6000 类,天气 15 类时间有 96 类。同样,在使用 onehot 编码进行编码后,我得到了一个形状为 (12500,)
的数组作为模型的输入。
你可以用PCA做降维。 它删除了相关变量并确保数据中存在高方差。
当类别数量很大时,one-hot encoding 效率太低。一个极端的例子是处理自然语言的句子:在这个任务中,词汇量通常有 100k 甚至更多。显然将一个10个单词的句子翻译成一个[10, 100000]
矩阵,几乎所有的都是零,会浪费内存。
研究人员使用的是嵌入层,它学习分类特征的密集表示。在单词的情况下,它被称为 word embedding,例如word2vec。这种表示要小得多,大约 100 维,并且使网络的其余部分能够有效地处理 100 维输入向量,而不是 100000 维向量。
在 keras 中,它是由一个 Embedding
层实现的,我认为它非常适合您的 geo
和 time
功能,而其他人可能可以很好地使用 one-hot编码。这意味着您的模型不再是 Sequential
,而是具有多个输入,其中一些通过嵌入层。主要模型将采用学习表示的串联并进行回归推理。