【发布时间】:2020-01-30 14:48:18
【问题描述】:
我正在使用 TensorFlow hub 上的this 模块成功转换文档。
每个文档的输出是一个 512 维向量,但这对我的应用程序来说太大了,我想减少模块本身不提供的维度。
我可以看到几个选项:
- 使用另一个具有较低维度输出的包。
- 使用诸如 PCA 或 tSNE 之类的东西来减小尺寸。
使用 PCA 或 tSNE 的问题在于这需要适合许多示例向量的数据 - 这意味着当新文档到达并已转换为 512 维向量时,我需要继续拟合另一个模型,然后更新旧的文档向量 - 这在我的应用程序中将是一个大问题。
还有其他可以对单个数据点进行操作的降维技术吗?
【问题讨论】:
-
只是一个想法,可能很愚蠢:您不能使用
dense层将线性(或非线性)映射到较低维度吗? -
这涉及到学习层,在我看来类似于 PCA 或 tSNE。
-
当然,但是您可以在获得 512 个暗淡向量后添加一个
dense层,然后让它沿着整个模型进行训练。相反,在 PCA 中,您将收集所有 512 个文档向量并在其上运行 PCA,但在这里您只需沿着encoder-decoder模型训练层。我说得通吗? :// -
不确定我明白了——我需要减少暗淡,并为每个文档存储这个向量,以便以后用作其他模型的特征——我不确定这一层会学习什么我们没有什么可优化的。
-
好的,我刚刚看到您使用的是预训练的编码器。我认为
dense层不需要学习任何东西,它只是一种表示输入数据的方式。你可以用迁移学习的方式来思考这一点,你的所有编码器都已经过训练,最后你只需使用一个具有随机权重的密集层来表示你的数据。
标签: python tensorflow machine-learning vector nlp