During my research, I've stumbled upon "complex-valued neural networks", which are neural networks that work with complex-valued inputs (probably weights too). What are the advantages (or simply the applications) of this kind of neural network over real-valued neural networks?


According to this paper, complex-valued ANNs (C-ANNs) can solve problems such as XOR and symmetry detection with a smaller number of layers than real ANNs (for both of these a 2 layer C-ANN suffices, whereas a 3-layer R-ANN is required).

I believe that it is still an open question as to how useful this result is in practice (e.g. whether it actually makes finding the right topology easier), so at present the key practical advantage of C-ANNs is when they are a closer model for the problem domain.

Application areas are then where complex values arise naturally, e.g. in optics, signal processing/FFT or electrical engineering.

  • $\begingroup$ What precludes applications in domains where complex values don't arise "naturally"? $\endgroup$ – dynrepsys Aug 4 '16 at 18:07
  • $\begingroup$ @dynrepsys To the best of my knowledge, nothing, although having complex inputs in a real valued domain would seem an odd design choice. $\endgroup$ – NietzscheanAI Aug 4 '16 at 18:10
  • $\begingroup$ Could they be used in weights without being used as inputs? $\endgroup$ – dynrepsys Aug 4 '16 at 18:21
  • $\begingroup$ @dynrepsys I believe so. $\endgroup$ – NietzscheanAI Aug 4 '16 at 18:43
  • $\begingroup$ Just a side note - implementing complex-valued weights and activations is certain platforms and languages can be awkward, since many lack support for complex-valued data types. In some, such as C#, VB.net, T-SQL and others I'm familiar with, various workarounds are available like using structs, classes and user-defined types (UDTs) but it's usually just not the same as having built-in data type support. Personally I've found it easier to model complex weights and activations by simply using two (or more) real-valued data types, one for each axis. YMMV though, depending on the application... $\endgroup$ – SQLServerSteve Oct 30 '16 at 16:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.