【发布时间】:2014-03-10 18:59:04
【问题描述】:
在我的神经网络中,我将所有权重矩阵组合成一个大矩阵: 例如,一个 3 层矩阵通常有 3 个权重矩阵 W1、W2、W3,每层一个。我创建了一个名为 W 的大型权重矩阵,其中 W2 和 W3 附加到 W1 的末尾。如果 W1 有 3 列,W2 有 3 列,W3 有 2 列,我的矩阵 W 将有 8 列。
层数/输入/输出数存储为全局变量。
这意味着我可以使用只有 2 个输入参数的前馈代码,因为前馈代码在函数内部将 W 拆分为 W1、W2、W3...等。
Output_of_Neural_Net = feedforward(Input_to_Neural_Net,W)
我还将训练数据存储为全局变量。这意味着我可以只使用一个输入参数来使用成本函数。
cost = costfn(W)
这样做的目的是让我可以使用内置的 MATLAB 函数来最小化成本函数,从而获得最接近我的训练数据的网络的 W。
我试过fminsearch(@costfn,W) 和fminunc(@costfn,W)。尽管fminunc 稍微好一点,但两者都给出了我试图近似的函数的平庸结果。
我现在想尝试反向传播来训练这个网络,看看它是否做得更好,但是大多数实现都是针对具有多个权重矩阵的网络,这使得它更加复杂。
我的问题是:我能否用我的单个附加权重矩阵实现反向传播,我该怎么做?
我觉得使用单个权重矩阵应该会使代码更简单,但我不知道如何实现它,因为我看到的所有其他示例都是针对多个权重矩阵的。
其他信息
网络将是一个具有 8 到 30 个输入和 3 个输出的函数逼近器。它逼近的函数非常复杂,涉及椭圆积分的逆(因此没有解析解)。网络的输入和输出将被归一化,使其介于 0 和 1 之间。
【问题讨论】:
标签: matlab machine-learning neural-network mathematical-optimization backpropagation