使用复数权重来训练神经网络(初始化复数权重实部输入)

4
如题所述。我想训练一个神经网络,其中权重为复数。使用默认的scikit learn网络并在此基础上进行构建(编辑源代码),我遇到的主要问题是,在scikit learn中使用的优化函数来自于scipy,仅支持对输入为实数的函数进行数值优化。
看起来,scikit learn对于神经网络来说相当糟糕,特别是如果您希望分叉和编辑结构,则该结构相当不灵活。
正如我在这篇论文中注意到和阅读的那样,我需要改变诸如误差函数之类的东西,以确保在顶层误差仍然保持为实数域,否则问题将变得不确定。
我的问题是,是否有任何标准库已经可以做到这一点?或者我能够在lasagne或tensorflow中进行任何简单的调整,以挽救我的生命?
注:很抱歉没有发布任何工作代码。这是一个难以按照stackoverflow标准格式化的问题,我承认它可能超出了主题,如果是这样,我向您道歉。

顺便问一下,你在 SciPy 中用什么来进行神经网络? - Ami Tavory
scipy.optimize.fmin_l_bfgs_b - Francisco Vargas
所有受限制的优化器都转换为实数以进行优化变量:/ - Francisco Vargas
好的,谢谢。 - Ami Tavory
3
复数与二维特征有何不同?如果将实部和虚部作为独立的神经元提供,你认为会有什么不同? - CAFEBABE
2个回答

4

最简单的方法是将您的功能分成实部和虚部。我曾经处理过来自Leap Motion的向量输入类似的工作,如果您将向量分为其组成轴,它会显着简化事情。


2

Tensorflow支持基本的复数操作。

如果你需要自己构建神经网络节点,可以参考这个博客

对于全纯函数,复数反向传播算法非常直接。

对于非全纯函数,需要仔细处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接