这个问题可能过于宽泛,但我会尽量使每一个子主题都尽可能具体。
我的设置:大二进制输入(每个样本2-4KB)(没有图像),相同大小的大二进制输出。
我的目标:使用深度学习找到从二进制输入到二进制输出的映射函数。
我已经生成了一个很大的训练集(> 1,000,000个样本),并且可以轻松地生成更多的训练集.
在我的神经网络和深度学习知识有限的情况下,我的计划是建立一个有2000或4000个输入节点、相同数量的输出节点和不同数量的隐藏层的网络。然后在我的数据集上对网络进行培训(必要时等待几个星期),并检查输入和输出之间是否存在相关性。
最好是将二进制数据作为单个比特输入到网络中,还是作为更大的实体(例如一次输入16位)?
对于逐位输入:我尝试过“神经设计器”,但是当我试图加载数据集(即使是6行的小数据集)时,软件会崩溃,我不得不编辑项目保存文件来设置输入和目标属性。然后又坠毁了。
我尝试过OpenNN,但是它尝试分配一个大小矩阵(hidden_layers *输入节点)^ 2,这当然失败了(对不起,没有117 no可用内存)。
是否有适合这种二元映射函数回归的开源框架?我要实施我自己的计划吗? 深入学习是正确的方法吗?
有没有人有过这样的工作经验?遗憾的是,我找不到任何关于深度学习+二进制映射的论文。
如有要求,我乐意补充更多资料。
谢谢你为一位菜鸟提供指导。
发布于 2016-01-14 15:36:30
您有一个包含二进制值向量对的数据集,最大长度为4,000位。您希望在这对之间创建一个映射函数。从表面上看,这似乎并不是不合理的--想象一幅64x64的图像带有二进制像素--它只包含4096位数据,完全可以用现代神经网络实现。
当您处理二进制值时,多层限制Boltzmann机器似乎是一个不错的选择。您向网络添加了多少层,这实际上取决于数据中的抽象级别。
您没有提到数据的来源,但我假设您希望有一个不错的相关性。假设每个位的位置是任意的,并且独立于它的近邻,我将排除一个卷积神经网络。
手电筒是一个很好的开放源码框架,可以进行实验,这是一个对机器学习算法有广泛支持的科学计算框架。它有额外的好处,利用您的GPU,以加快处理,感谢它的CUDA的实现。希望这能避免你等待几个星期的结果。
如果你能提供更多的背景资料,那么也许我们可以在一个解决方案…中找到答案。
https://stackoverflow.com/questions/33556259
复制相似问题