2017-09-05 61 views
1

我有一个神经网络,其输入层有10个节点,一些隐藏层和一个只有1个节点的输出层。然后我在输入层中放置一个模式,经过一些处理后,它输出输出神经元中的数值,从110。在训练之后,该模型能够获得输出,并提供输入模式。如何正向训练神经网络并以反向方式使用它

现在,我的问题是,如果有可能计算逆模型:这意味着,我从输出端提供一个数字(即使用输出端作为输入),然后从这些10输入中获得随机模式神经元(即使用输入作为输出端)。

我想这样做是因为我会先根据模式难度训练网络(输入是模式和输出难理解模式)。然后我想用一个数字给网络喂食,以便根据难度创建随机模式。

+0

我不确定你的问题,但似乎你正在寻找编码器和解码器。 –

+1

有没有你正在使用的特定框架? – McLawrence

+0

不是真的,这只是一个想法,我在想是否可以有任何数学方式做这个 –

回答

2

我希望我能正确理解你的问题,所以我会用我自己的话总结一下:你有一个给定的模型,并且想要确定产生给定输出的输入。

假设,这是正确的,至少有一种方法我知道,你怎么可以做到这一点。这种方式很容易实现,但可能需要一段时间来计算一个值 - 可能有更好的方法来做到这一点,但我不确定。 (几周前我在强化学习的主题中需要这种技术,并且与此相比没有找到更好的东西):假设您的Model 将输入映射到输出。我们现在必须创建一个新模型,我们将其称为:此模型稍后将计算模型的倒数,以便它为您提供输出以获得特定输出的输入。要构建,我们将创建一个新模型,该模型由一个与输入具有相同维数m的纯色Dense图层组成。现在,该层将连接到型号为的输入。接下来,你让所有权重为不可训练(这非常重要!)。

现在我们已经设置为找到一个反转值:假设您想要在输出y中找到相应的输入(相应的意思是:它创建输出,但不是唯一的)。您必须创建一个新的输入向量v,这是的统一。然后创建一个由(v, y)组成的输入输出数据对。现在你使用任何你希望让输入输出训练数据通过你的网络传播的优化器,直到误差收敛到零。一旦发生这种情况,您可以计算实际输入,通过这样做可以得到输出y:假设新输入层的权重为w,偏差为b,所需输入uu = w*1 + b(其中1) 你可能会问为什么这个方程式成立的原因,所以让我试着回答一下:你的模型会试着学习你新输入层的权重,所以作为输入的统一将产生给定的输出。由于只有新增的输入图层可以训练,所以只有这个权重会被改变。因此,这个向量中的每个权重将表示所需输入向量的相应分量。通过使用优化器并最小化所需输出与我们的逆模型的输出之间的距离,我们将最终确定一组权重,这将给您一个很好的输入向量近似值。

+0

好的,谢谢我想起它 –