这个问题可能过于宽泛,但我会尽量使每个子主题尽可能具体。
我的设定: 大二进制输入(每个样本2-4 KB)(无图像) 相同大小的大二进制输出
我的目标:使用深度学习从我的二进制输入到二进制输出中查找映射函数。
我已经生成了一个大型训练集(> 1000'000个样本),并且可以轻松生成更多。
在我(神经网络和深度学习)的知识中,我的计划是构建一个具有2000或4000个输入节点,相同数量的输出节点并尝试不同数量的隐藏层的网络。 然后在我的数据集上训练网络(必要时等待几周),并检查输入和输出之间是否存在相关性。
将二进制数据作为单个位输入到网络中,还是作为更大的实体(一次输入16位等)会更好吗?
对于逐位输入: 我尝试过“神经设计师”,但是当我尝试加载我的数据集(即使是6行的小数据集)时软件崩溃,我不得不编辑项目保存文件来设置输入和目标属性。然后又崩溃了。
我尝试过OpenNN,但是它试图分配一个大小的矩阵(hidden_layers *输入节点)^ 2,当然,它失败了(抱歉,没有117GB的RAM可用)。
是否有合适的开源框架可用于此类 二元映射函数回归?我必须实现自己的吗?
深度学习正确的方法吗?
有没有人经历过这类任务? 可悲的是,我找不到任何关于深度学习+二进制映射的论文。
如果需要,我很乐意添加更多信息。
感谢您为菜鸟提供指导。
答案 0 :(得分:0)
您有一个包含二进制值向量对的数据集,最大长度为4,000位。您想在对之间创建映射函数。从表面上看,这看起来似乎不合理 - 想象一下具有二进制像素的64x64图像 - 这只包含4,096位数据,并且完全在现代神经网络的范围内。
当您处理二进制值时,多层Restricted Boltzmann Machine似乎是一个不错的选择。您添加到网络的层数实际上取决于数据中的抽象级别。
你没有提到数据的来源,但我认为你期望有一个像样的相关性。假设每个位的位置是任意的并且独立于其近邻,我将排除卷积神经网络。
一个很好的开源框架来试验是Torch - 一个科学计算框架,广泛支持机器学习算法。由于其CUDA实现,它还具有利用GPU加速处理的额外好处。这有望避免你等待几周的结果。
如果您提供更多背景信息,那么我们可以选择一个解决方案......