Answers.Body: <p>According to <a href="http://link.springer.com/chapter/10.1007/3-540-44989-2_118" rel="nofollow noreferrer">this paper</a>, 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).</p>
  <p>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.</p>
  <p>Application areas are then where complex values arise naturally, e.g. in optics, signal processing/FFT or electrical engineering.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-10-30T16:59:00.243Z
Answers.Text: 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...
Answers.UserDisplayName: SQLServerSteve
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-08-04T18:07:27.137Z
Answers.Text: What precludes applications in domains where complex values don't arise "naturally"?
Answers.UserDisplayName: dynrepsys
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-08-04T18:10:41.090Z
Answers.Text: @dynrepsys To the best of my knowledge, nothing, although having complex inputs in a real  valued domain would seem an odd design choice.
Answers.UserDisplayName: NietzscheanAI
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-08-04T18:21:34.277Z
Answers.Text: Could they be used in weights without being used as inputs?
Answers.UserDisplayName: dynrepsys
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-08-04T18:43:21.927Z
Answers.Text: @dynrepsys I believe so.
Answers.UserDisplayName: NietzscheanAI
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2016-08-04T10:28:59.957Z
Answers.LastActivityDate: 2022-07-11T00:33:52.520Z
Answers.LastEditDate: 2022-07-11T00:33:52.520Z
Answers.UserDisplayName: NietzscheanAI
Body: <p>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?</p>
  
Tags: <neural-networks>
Title: What are the advantages of complex-valued neural networks?
UserDisplayName: rcpinto
ThreadText: # What are the advantages of complex-valued neural networks?
  
  (Asked by: username_0 on 2016-08-04)
  
  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?
  
  **Tags:** neural-networks
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2016-08-04. Score: 10 | Accepted answer
  
  According to [this paper](http://link.springer.com/chapter/10.1007/3-540-44989-2_118), 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.
  
  > **Comments:**
  > **username_3**: What precludes applications in domains where complex values don't arise "naturally"?  
  > **username_1**: @dynrepsys To the best of my knowledge, nothing, although having complex inputs in a real  valued domain would seem an odd design choice.  
  > **username_3**: Could they be used in weights without being used as inputs?  
  > **username_1**: @dynrepsys I believe so.  
  > **username_2**: 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...  
  
  ---
  
  