【问题标题】:Is it possible to feed the output back to input in artificial neural network?是否可以将输出反馈给人工神经网络的输入?
【发布时间】:2020-12-09 11:58:37
【问题描述】:

我目前正在为衰减曲线问题设计一个人工神经网络。 例如,建立一个模型来预测某些材料的耐久性。它可能包括温度和湿度等环境条件。

但是,仅仅预测材料的耐用性是不够的。对于这样的问题,我认为最好将前一个时隙的输出持久性作为当前输入之一来预测下一个时隙的持久性。

此外,我不知道如何训练将输出反馈给输入的模型,因为其中一个输入列在训练之前只有初始值。

对于这种情况,

方法一(失败) 我试图将当前行的预测输出持久性填充到下一行的输入持久性。尽管如此,它会阻止模型“loss.backward()”,因此如果我们这样做,我们将无法计算和更新梯度。当我将预测输出复制到输入数据的下一行时,使用的梯度函数是“CopySlices”而不是“MSELoss”。

Feed output to input

gradient function -copy-

方法2“用预期输出填充输入列” 在这种方法中,我在训练模型之前用预期输出(第 1 行)填充空白输入列。用前一行的预期输出填充输入列仅用于训练。对于真正的预测,我会将预测的输出提供给输入。在这种情况下,我成功地用 MSELoss 训练了一个过拟合模型。

此外,我不认为这是一种正确的方法,因为它使用预期的输出作为输入,无论它预测的有多糟糕。我坚信这不是正确的方法。


因此,我想问一下,在使用人工神经网络的线性回归问题中,是否可以将输出馈送到输入。

我很抱歉在这里没有上传代码,因为我不方便在这里上传完整的代码。它可能是机密的。

【问题讨论】:

  • 对不起,这不是线性回归问题。它是一个类似于θ衰减曲线的非线性曲线。
  • 你想输入神经网络的数据是什么?如果我理解正确,您的数据仅包含初始值和最终值?还是您也有一系列步骤?
  • 不,只有刚度(t-1)的初始值。有 4 个输入,Stiffness(t-1)、温度、湿度和累积载荷。

标签: deep-learning neural-network pytorch linear-regression loss-function


【解决方案1】:

看起来您需要一个 RNN(循环神经网络)。本教程对理解 RNN 非常有帮助:https://colah.github.io/posts/2015-08-Understanding-LSTMs/

【讨论】:

  • 这是否意味着RNN在隐藏层为我做反馈,我不需要手动将输入提供给输出?
  • @MissingSomeHead 是的。 RNN 执行 h(t) = W_h * h(t-1) + W_x * x(t) 而普通前馈层仅执行 h(t) = W_x * x(t)。
  • RNN 似乎使用反馈来重复该模式。但是,我不会重复这种模式。我想衰减输出。它必须比之前的下降值下降得更深。
猜你喜欢
  • 2020-04-12
  • 1970-01-01
  • 2019-06-22
  • 2015-05-26
  • 2018-10-20
  • 2019-07-27
  • 2015-12-23
  • 1970-01-01
  • 2022-01-08
相关资源
最近更新 更多