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?


1 Answer 1


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
    Commented Aug 4, 2016 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$ Commented Aug 4, 2016 at 18:10
  • $\begingroup$ Could they be used in weights without being used as inputs? $\endgroup$
    – dynrepsys
    Commented Aug 4, 2016 at 18:21
  • $\begingroup$ @dynrepsys I believe so. $\endgroup$ Commented Aug 4, 2016 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$ Commented Oct 30, 2016 at 16:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .