pytorch implementation of complex convolutional neural network
Reference: https://arxiv.org/pdf/1705.09792.pdf
When using complex numbers as a domain of a neural network (such as speech enhancement) deep complex networks can be very effective.
Phase-Aware Speech Enhancement with Deep Complex U-Net is a great example. Use this as a building block of complex number targeted architecture.
pip install complexcnn
# Suppose X is a complex vector shape of [batch,channel,axis1,axis2]
X = np.stack((X.real,X.imag),axis=1) # shape: [batch,2,channel,axis1,axis2]
X = torch.Tensor(X).to(device)
Same as Pytorch Conv2d Parameters
- in_channel (required)
- out_channel (required)
- kernel_size (required)
- stride (default: 1)
- padding (default: 0)
- dilation (default: 1)
- groups (default: 1)
- bias (default: True)
- Tensor (Type: torch.Tensor) shape: (batchsize, 2, input channel, axis1, axis2)
- Tensor (Type: torch.Tensor) shape: (batchsize, 2, output channel, axis1, axis2)
from complexcnn.modules import ComplexConv
## Parameters Below are totally random
input_channel = 3
output_channel = 24
kernel_size = (5,5)
complex_conv = ComplexConv(input_channel, output_channel, kernel_size)
Y = complex_conv(X)