如何用 dl4j 正确使用我的神经网络?



我的问题:

我用 deeplearning4j 实现了一个前馈模型和一个循环模型来检测一维信号中的异常。 也许我缺少一个抽象,但我认为我可以通过以下方式解决这个问题:

  1. 预处理数据。我有 5 种不同的故障类别,每个类别有大约 40 个示例。 每次失败都有自己的"结构"。
  2. 构建一个具有 5 个输出神经元的神经网络,每个失败一个。
  3. 训练和评估。
  4. 现在我想用真实数据测试我的网络,它应该在一个很长的1D中检测到异常 信号。这个想法是,网络应该以某种方式"迭代"信号并检测这些故障。 在其中。

这种方法可能吗?你有什么想法吗?

提前感谢!

这取决于这些缺陷的结构是什么样子的。

鉴于您有一个一维信号,我希望您的示例是一系列数据,实际上是连续信号的窗口。

有多种方法可以对该问题进行建模:

滑动窗口

如果所有示例的长度相同,则此方法有效。在这种情况下,您可以创建一个正常的前馈网络,该网络仅采用固定数量的步数作为输入并返回单个分类。

如果你的真实数据没有足够的数据,你可以填充它,如果它的数据比示例长度多,那么你滑过序列(例如,当窗口大小为2时,序列abcd变成[ab],[bc],[cd],你会得到3个分类(。

据我所知,DL4J中没有开箱即用的东西可以实现此解决方案。但另一方面,使用RecordConverter.toRecordRecordConverter.toArray将真实数据转换为 NDArray 自行实现它应该不会太难。

循环网络

使用循环网络,您可以将神经网络应用于任意长度的序列数据。如果您要查找的故障在信号中可能具有不同的长度,则这可能是您的选择。

循环网络可以有一个内部状态,在推理期间每次调用时都会更新,并且它将在信号的每一步之后生成分类。

适合您的解决方案将完全取决于您的实际具体用例。

最新更新