我正在做一个文档分类项目,我在 tensorflow 中使用神经网络,其中的特征是来自 fastext 或 word2vec 的 300 维词嵌入(是的,我知道有更新更好的嵌入——这是为了向后兼容性)。
每个文档都很长——3000 多个令牌。
特征化包括对文档进行标记、嵌入并将嵌入堆叠到维度数组中batchsize, max_doc_length, features。制作批处理文件(在 CPU 上)所需的时间是执行一次反向传播迭代(也在 CPU 上)所需时间的 5 倍以上。如果反向传播速度更快,我的问题在 GPU 上会更糟。
我的批次大小几乎为 1GB,所以如果我要在开始反向传播之前将所有内容写入磁盘,我会使用几乎整个 TB。这太多了,特别是考虑到我想尝试不同的特征化策略。
那么,有什么好的方法可以解决这个问题呢?是否有旨在解决此问题的软件包?
现在我有两个并行的进程——一个生成批处理并将它们保存到磁盘(并行),另一个加载它们,将它们用于反向传播,然后删除它们。感觉有点笨拙,我不能成为第一个遇到这个问题的人。
建议赞赏!