做脉冲有什么作用?
题主是不是在问“做脉冲,有什么意义”呢? 看到题目差点以为是题主在做实验报告。不过,不管怎么说,既然已经做了这个题目了,就好好答一下。 先说一下我做过的一个简单的前馈神经网络(简称FPNN)的脉冲实现。因为用的工具比较古老,是用matlab的pspell包实现的。所以我只能用matlab来演示结果。
1.生成测试数据 因为要训练的网络结构比较简单,所以测试数据也比较简单。就是一个输入层,一个输出层,中间是若干个全连接层。每个节点有100个神经元。然后每一层的激活函数都是tanh,损失函数是mse。这样,用pspell包的train函数就可以训练出一个合适的模型。这里为了显示效果直接用了pspell包的demo功能生成的数据。如图所示,一共32个数据点。
2.建立网络并仿真 利用产生的数据,调用pspell包的sim函数进行模拟。因为前面已经调了train函数,所以这里的input和target两个向量就不用再标定了。sim函数会自己找到最适合的参数。
3.添加噪声 把第2步中的输出加一些噪声。我这里是加了高斯白噪声。当然也可以加其他的噪声。这一步其实可以不加,但是加了之后结果会更接近真实的结果,因为实际的信号肯定是带噪的。在这里,由于我的测试数据本身带噪就比较严重,所以加入的小的噪声被掩盖了。
4. 应用网络 把第3步中的噪声作为输入,输入到刚才建立的网络中,可以得到如下的结果。 从图中可以看到,虽然加了噪声,但是网络还是成功地抓住了信号的特点并将它还原出来了。
以上只是简单地利用PSPIP做了一个简单的例子。实际上,如果运用恰当的话,PSPIP可以做很多事情。比如,对生物电数据的分析[1]、对脑磁数据的发掘 [2]等等。只要会利用python的基本函数,加上正确的数据格式,PSPIP能够完成你们想要的大部分数据分析任务。