machine-learning - 用于神经网络训练的数据编码
问题描述
我已将349,900
单词从字典文件转换为 md5 哈希。示例如下:
74b87337454200d4d33f80c4663dc5e5
594f803b380a41396ed63dca39503542
0b4e7a0e5fe84ad35fb5f95b9ceeac79
5d793fc5b00a2348c3fb9ab59e5ca98a
3dbe00a167653a1aaee01d93e77e730e
ffc32e9606a34d09fca5d82e3448f71f
2fa9f0700f68f32d2d520302906e65ce
1c9b32ff1b53bd892b87578a11cbd333
26a10043bba821303408ebce568a2746
c3c32ff3481e9745e10defa7ce5b511e
我想训练一个神经网络来使用像多层感知器这样的简单架构来解密哈希。由于所有哈希值的长度为 32,我认为输入节点的数量是 32,但这里的问题是输出节点的数量。由于输出是字典中的单词,它没有任何特定的长度。它可以是各种长度。这就是为什么我对我应该拥有多少个输出节点感到困惑的原因。
我将如何编码我的数据,以便我可以拥有特定数量的输出节点?
我在此链接中找到了一篇论文,该论文实际上使用神经网络解密了哈希。报纸说
神经网络的输入是要解码的加密文本。这以双极或二进制格式输入神经网络。然后,它穿过隐藏层到达最终输出层,该输出层也是双极或二进制格式(如输入中给出的)。然后将其转换回纯文本以进行进一步处理。
我将如何实施论文中所说的内容。我正在考虑限制要解密的字符数。最初,我只能将其限制为4
字符(仅用于测试目的)。
我的输入节点将是32
代表散列每个字符的节点。每个输入节点都将具有(each_hash_character/256 的 ASCII 值)。我的输出节点将有 32 个节点也代表二进制格式。由于 8 位/8 个节点代表一个字符,我的网络将能够解密最多 4 个字符,因为 (32/8) = 4。(如果我愿意,我可以增加它。)我计划使用 33 个节点. 我的网络架构可行吗?32 x 33 x 32
? 如果不是,为什么?请指导我。
解决方案
您可以将字典中的单词映射到向量空间中(例如词袋、word2vec、..)。在这种情况下,单词以固定长度编码。输出层中的神经元数量将匹配该长度。
推荐阅读
- android - 微调器不清除
- amazon-web-services - 如何从 Amazon AWS 存储桶创建列表或 URL?
- python - 在矩阵中查找单词
- python - 用python导出环境变量
- python - 如何调用 numpy 求解器以最小化带有约束的 obj_func
- html - 在 wordpress 上制作全宽的 woocommerce?
- python - 在siview中显示图片大小
- python - pandas 按数据框绘制分组
- reactjs - “npm start”命令突然停止使用包含旧项目和新创建项目的“create-react-app”项目文件夹
- java - 调用内部类的重绘不会触发 paint() 实际上什么都不做