walsvid / CoordConv

Pytorch implementation of "An intriguing failing of convolutional neural networks and the CoordConv solution" - https://arxiv.org/abs/1807.03247

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CoordConv

Pytorch implementation of CoordConv for N-D ConvLayers, and the experiments.

Reference from the paper: An intriguing failing of convolutional neural networks and the CoordConv solution

Extends the CoordinateChannel concatenation from 2D to 1D and 3D tensors.

Requirements

  • pytorch 0.4.0
  • torchvision 0.2.1
  • torchsummary 1.3
  • sklearn 0.19.1

Usage

from coordconv import CoordConv1d, CoordConv2d, CoordConv3d

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.coordconv = CoordConv2d(2, 32, 1, with_r=True)
        self.conv1 = nn.Conv2d(32, 64, 1)
        self.conv2 = nn.Conv2d(64, 64, 1)
        self.conv3 = nn.Conv2d(64,  1, 1)
        self.conv4 = nn.Conv2d( 1,  1, 1)

    def forward(self, x):
        x = self.coordconv(x)
        x = F.relu(self.conv1(x))
        x = F.relu(self.conv2(x))
        x = F.relu(self.conv3(x))
        x = self.conv4(x)
        x = x.view(-1, 64*64)
        return x

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
net = Net().to(device)

Experiments

Implement experiments from origin paper.

Coordinate Classification

Use experiments/generate_data.py to generate Uniform and Quadrant datasets for Coordinate Classification task.

Use experiments/train_and_test.py to train and test neural network model.

Uniform Datasets

Train Test Predictions

Quadrant Datasets

Train Test Predictions

About

Pytorch implementation of "An intriguing failing of convolutional neural networks and the CoordConv solution" - https://arxiv.org/abs/1807.03247

License:MIT License


Languages

Language:Jupyter Notebook 72.7%Language:Python 27.3%