{"id":20263101,"url":"https://github.com/mehdihosseinimoghadam/complex-neural-networks","last_synced_at":"2025-04-11T02:08:01.948Z","repository":{"id":50315375,"uuid":"458331673","full_name":"mehdihosseinimoghadam/Complex-Neural-Networks","owner":"mehdihosseinimoghadam","description":"Implementation of Complex Valued Neural Networks in Pytorch 🧠","archived":false,"fork":false,"pushed_at":"2025-03-27T10:01:29.000Z","size":108,"stargazers_count":45,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T02:07:53.657Z","etag":null,"topics":["complex-batchnorm-layer","complex-convolutional-layer","complex-deep-unet","complex-lenet","complex-linear-layer","complex-lstm-layer","complex-networks","complex-neural-networks","complex-valued-inception","complex-valued-neural-networks","complex-valued-vgg","complex-vgg16-net","pytorch"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mehdihosseinimoghadam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-11T20:30:51.000Z","updated_at":"2025-03-27T10:01:33.000Z","dependencies_parsed_at":"2025-03-20T10:25:51.712Z","dependency_job_id":"31bee03b-22f4-41fc-b449-bd78af84d2d6","html_url":"https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehdihosseinimoghadam%2FComplex-Neural-Networks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehdihosseinimoghadam%2FComplex-Neural-Networks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehdihosseinimoghadam%2FComplex-Neural-Networks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mehdihosseinimoghadam%2FComplex-Neural-Networks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mehdihosseinimoghadam","download_url":"https://codeload.github.com/mehdihosseinimoghadam/Complex-Neural-Networks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248328163,"owners_count":21085261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["complex-batchnorm-layer","complex-convolutional-layer","complex-deep-unet","complex-lenet","complex-linear-layer","complex-lstm-layer","complex-networks","complex-neural-networks","complex-valued-inception","complex-valued-neural-networks","complex-valued-vgg","complex-vgg16-net","pytorch"],"created_at":"2024-11-14T11:33:29.560Z","updated_at":"2025-04-11T02:08:01.938Z","avatar_url":"https://github.com/mehdihosseinimoghadam.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Complex Neural Networks 🧠\n##### This Repo Contains Implementation of Complex Valued Neural Networks in Pytorch including 🧱:\n- Complex Linear Layer\n- Complex Convolution2d layer\n- Complex ConvolutionTrans2d layer\n- Complex BatchNorm2d layer\n- Complex MaxPool2d layer\n- Complex AvePool2d layer\n- Complex LSTM layer\n##### And Some Famous Deep Learning Architectures Like 🏛️:\n\n- Complex Valued VGG11, VGG13, VGG16\n- Complex Valued LeNet\n- Complex Valued Google Inception\n\n\n\n\n\n\n[![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://travis-ci.org/joemccann/dillinger)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/Complex_Deep_Neural_Network.ipynb)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)\n\n\n\n#### Short Intro on Complex Neural Networks 📖\nAlmost all deep learning layers and deep learning models work with real numbers, but there are some cases which we might need complex numbers in our neural net. A brilliant example of this is in the area of signal processing, when we want to analyze both magnitude and phase of a given signal (for more info on that refer to [this paper](https://openreview.net/forum?id=SkeRTsAcYm). So it is important to have complex valued neural networks, which this repo is all about. For more info refer to [this paper](https://arxiv.org/abs/2101.12249)\n\n\n\n\nPrerequisites 🧰\n-------------\n- `Python 3.6` \n- `pytorch`\n\n\n\nLayers 🧱\n----------\n| Layer  | Class Name |  File | \n| :-------------: | :---------------: | :---------------: |\n| Complex Linear Layer | `CLinear` |  [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex Convolution2d layer | `CConv2d` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex ConvolutionTrans2d layer | `CConvTrans2d` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex BatchNorm2d layer | `CBatchnorm` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex MaxPool2d layer | `CMaxPool2d` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex AvePool2d layer | `CAvgPool2d` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n| Complex LSTM layer | `CLSTM` | [complex_neural_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/complex_neural_net.py) |\n\n\n\n\nArchitectures 🏛️\n----------\n| Layer  | Class Name |  File | \n| :-------------: | :---------------: | :---------------: |\n| Complex Valued VGG11, VGG13, VGG16 | `Complex_VGG_net` |  [Complex_Vgg_net](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/Complex_Vgg_net.py) |\n| Complex Valued LeNet | `Complex_LeNet` | [Complex_LeNe](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/Complex_LeNet.py) |\n| Complex Valued Google Inception | `Complex_GoogLeNet` | [Complex_Google_Inception](https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks/blob/main/Complex_Google_Inception.py) |\n\n\n\n\n\n## Usage of Layers ✨✨\n\nClone the Repo:\n\n\n\n```sh\ngit clone https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks.git\n```\n\nSome Imports:\n```py\n\u003e\u003e\u003e import torch\n\u003e\u003e\u003e from complex_neural_net import CConv2d\n```\n\nPraper Complex Valued Data:\n\n```py\n\u003e\u003e\u003e x0 = torch.randn(5,5)\n\u003e\u003e\u003e x1 = torch.randn(5,5)\n\u003e\u003e\u003e x = torch.stack([x0,x1],-1)\n\u003e\u003e\u003e x = x.unsqueeze(0)\n\u003e\u003e\u003e x = x.unsqueeze(0)\n\u003e\u003e\u003e print(x.shape)\n\ntorch.Size([1, 1, 5, 5, 2])\n```\n\n\nUse Complex Valued Conv2d:\n\n```py\n\u003e\u003e\u003e CConv2d1 = CConv2d(in_channels = 1, out_channels = 2, kernel_size = (2,2), stride = (1,1), padding = (0,0))\n\u003e\u003e\u003e print(x.shape)\n\u003e\u003e\u003e print(CConv2d1(x))\n\u003e\u003e\u003e print(CConv2d1(x).shape)\n\ntorch.Size([1, 1, 5, 5, 2])\ntensor([[[[[-2.7639, -0.3970],\n           [-1.5627,  0.3068],\n           [ 2.3798,  1.2708],\n           [-1.1730,  2.1180]],\n\n          [[ 2.4931,  0.5094],\n           [-0.9082, -2.1115],\n           [ 1.4688, -2.2492],\n           [-0.4631,  1.0015]],\n\n          [[-1.1452,  1.4262],\n           [-1.0511,  4.3379],\n           [ 0.9986,  0.9051],\n           [ 2.2954,  1.1620]],\n\n          [[-0.1294,  0.9085],\n           [ 0.5013,  0.3251],\n           [-1.1305,  1.0306],\n           [ 0.0047,  0.9547]]],\n\n\n         [[[-2.3747, -0.1068],\n           [-2.0242,  0.8044],\n           [-0.8330, -1.5812],\n           [ 0.1164,  0.0097]],\n\n          [[ 1.6645, -0.8150],\n           [ 0.0091, -0.3579],\n           [-1.6963, -2.1597],\n           [ 0.5094, -0.8979]],\n\n          [[-1.1619, -0.5089],\n           [ 0.4402,  1.2927],\n           [-0.7533,  0.4308],\n           [ 0.7653, -1.0404]],\n\n          [[-0.4184, -0.3899],\n           [-0.5725, -1.2871],\n           [-0.7463,  0.0388],\n           [-0.4549,  0.0852]]]]], grad_fn=\u003cStackBackward0\u003e)\ntorch.Size([1, 2, 4, 4, 2])\n\n```\n\n## Usage of Different Architectures ✨✨\n\n\n```sh\ngit clone https://github.com/mehdihosseinimoghadam/Complex-Neural-Networks.git\n```\n\nSome Imports:\n```py\n\u003e\u003e\u003e import torch\n\u003e\u003e\u003e from complex_neural_net import CConv2d\n\u003e\u003e\u003e from Complex_Vgg_net import *\n```\n\nInitialize Model:\n\n```py\n\u003e\u003e\u003e device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n\u003e\u003e\u003e model = Complex_VGG_net(in_channels=3, num_classes=1000).to(device)\n\u003e\u003e\u003e print(model)\n\nComplex_VGG_net(\n  (complex_conv_layers): Sequential(\n    (0): CConv2d(\n      (re_conv): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (1): CBatchnorm(\n      (re_batch): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (2): ReLU()\n    (3): CConv2d(\n      (re_conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (4): CBatchnorm(\n      (re_batch): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (5): ReLU()\n    (6): CMaxPool2d(\n      (CMax_re): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n      (CMax_im): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n    )\n    (7): CConv2d(\n      (re_conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (8): CBatchnorm(\n      (re_batch): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (9): ReLU()\n    (10): CConv2d(\n      (re_conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (11): CBatchnorm(\n      (re_batch): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (12): ReLU()\n    (13): CMaxPool2d(\n      (CMax_re): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n      (CMax_im): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n    )\n    (14): CConv2d(\n      (re_conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (15): CBatchnorm(\n      (re_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (16): ReLU()\n    (17): CConv2d(\n      (re_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (18): CBatchnorm(\n      (re_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (19): ReLU()\n    (20): CConv2d(\n      (re_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (21): CBatchnorm(\n      (re_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (22): ReLU()\n    (23): CMaxPool2d(\n      (CMax_re): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n      (CMax_im): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n    )\n    (24): CConv2d(\n      (re_conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (25): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (26): ReLU()\n    (27): CConv2d(\n      (re_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (28): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (29): ReLU()\n    (30): CConv2d(\n      (re_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (31): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (32): ReLU()\n    (33): CMaxPool2d(\n      (CMax_re): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n      (CMax_im): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n    )\n    (34): CConv2d(\n      (re_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (35): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (36): ReLU()\n    (37): CConv2d(\n      (re_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (38): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (39): ReLU()\n    (40): CConv2d(\n      (re_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n      (im_conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n    )\n    (41): CBatchnorm(\n      (re_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n      (im_batch): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n    )\n    (42): ReLU()\n    (43): CMaxPool2d(\n      (CMax_re): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n      (CMax_im): MaxPool2d(kernel_size=(2, 2), stride=(2, 2), padding=0, dilation=1, ceil_mode=False)\n    )\n  )\n  (complex_linear_block): Sequential(\n    (0): CLinear(\n      (re_linear): Linear(in_features=25088, out_features=4096, bias=True)\n      (im_linear): Linear(in_features=25088, out_features=4096, bias=True)\n    )\n    (1): ReLU()\n    (2): Dropout(p=0.5, inplace=False)\n    (3): CLinear(\n      (re_linear): Linear(in_features=4096, out_features=4096, bias=True)\n      (im_linear): Linear(in_features=4096, out_features=4096, bias=True)\n    )\n    (4): ReLU()\n    (5): Dropout(p=0.5, inplace=False)\n    (6): CLinear(\n      (re_linear): Linear(in_features=4096, out_features=1000, bias=True)\n      (im_linear): Linear(in_features=4096, out_features=1000, bias=True)\n    )\n  )\n)\n\n```\n\nFeed Data into Model:\n\n```py\n\u003e\u003e\u003e x0 = torch.randn(3, 3, 224, 224).to(device)\n\u003e\u003e\u003e x1 = torch.randn(3, 3, 224, 224).to(device)\n\u003e\u003e\u003e x = torch.stack([x0, x1], -1)\n\u003e\u003e\u003e print(x.shape)\n\u003e\u003e\u003e print(model(x).shape)\n\ntorch.Size([3, 3, 224, 224, 2])\ntorch.Size([3, 1000, 2])\n```\n\n\n## License\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)\n\nReleased 2022 by [Mehdi Hosseini Moghadam](https://github.com/mehdihosseinimoghadam)\n\n\n## Contact\n\n\u003ca href=\"https://ir.linkedin.com/in/mehdi-hosseini-moghadam-384912198\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn-icons.flaticon.com/png/512/3536/premium/3536505.png?token=exp=1644871115~hmac=59bc0b44906adebd63f84642086d4695\" alt=\"Buy Me A Coffee\" style=\"height: 50px !important;width: 50px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\t\n\t\n\u003ca href=\"https://scholar.google.com/citations?user=TKWbohsAAAAJ\u0026hl=en\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn-icons.flaticon.com/png/512/3107/premium/3107171.png?token=exp=1644871560~hmac=7f8fd85e8db71945e25202a3ac739e1c\" alt=\"Buy Me A Coffee\" style=\"height: 50px !important;width: 50px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\n\u003ca href=\"https://huggingface.co/MehdiHosseiniMoghadam\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn-icons.flaticon.com/png/512/2461/premium/2461892.png?token=exp=1644871873~hmac=8659d04d69008e399a5344cad5bc4270\" alt=\"Buy Me A Coffee\" style=\"height: 50px !important;width: 50px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\t\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehdihosseinimoghadam%2Fcomplex-neural-networks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmehdihosseinimoghadam%2Fcomplex-neural-networks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehdihosseinimoghadam%2Fcomplex-neural-networks/lists"}