用于映射大型二进制输入的深度学习

问题描述 投票:0回答:1

我的设置:

  • 大型二进制输入(每个样本 2-4 KB)(无图像)
  • 相同大小的大二进制输出

我的目标:使用深度学习找到从二进制输入到二进制输出的映射函数。

我已经生成了一个大型训练集(> 1'000'000 个样本),并且可以轻松生成更多。

以我对神经网络和深度学习的了解(诚然有限),我的计划是构建一个具有 2000 或 4000 个输入节点、相同数量的输出节点并尝试不同数量的隐藏层的网络。 然后在我的数据集上训练网络(如有必要,等待几周),并检查输入和输出之间是否存在相关性。

将我的二进制数据作为单个位输入到网络中,还是作为更大的实体(例如一次 16 位等)输入会更好吗?

对于逐位输入: 我尝试过“Neural Designer”,但是当我尝试加载数据集(即使是 6 行的小数据集)时,软件崩溃了,并且我必须编辑项目保存文件以设置输入和目标属性。然后又崩溃了。

我尝试过 OpenNN,但它尝试分配一个大小为 (hidden_layers * 输入节点) ^ 2 的矩阵,这当然失败了(抱歉,没有 117GB 可用的 RAM)。

有没有合适的开源框架可以用于这种情况 二元映射函数回归?我必须自己实现吗?

深度学习是正确的方法吗?

有人有过此类任务的经验吗?

neural-network binary-data deep-learning
1个回答
0
投票

您有一个包含二进制值向量对的数据集,最大长度为 4,000 位。您想要在对之间创建映射函数。从表面上看,这似乎并不是不合理 - 想象一个具有二进制像素的 64x64 图像 - 这仅包含 4,096 位数据,并且完全在现代神经网络的能力范围内。

当您处理二进制值时,多层“受限玻尔兹曼机”似乎是一个不错的选择。您向网络添加多少层实际上取决于数据的抽象级别。 您没有提及数据来源,但我认为您希望存在良好的相关性。假设每个位的位置是任意的并且与其近邻无关,我会排除卷积神经网络。

一个很好的实验开源框架是

Torch

——一个广泛支持机器学习算法的科学计算框架。由于其 CUDA 实现,它还有一个额外的好处,即利用 GPU 来加速处理。这有望避免您等待数周才能得到结果。 如果您提供更多背景信息,那么也许我们可以找到解决方案......

© www.soinside.com 2019 - 2024. All rights reserved.