Python Forum
Get error message in a GAN neural network tutorial - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: Get error message in a GAN neural network tutorial (/thread-30489.html)



Get error message in a GAN neural network tutorial - jdude50 - Oct-22-2020

I am taking a tutorial course in Generative Adversarial Networks with Python. I have been following along with the teacher. I have been executing the code in chunks to make sure that everything is working. I have everything working so far in this block of code with the exception of the very last line. I get the following error message:

TypeError: __init__() takes 1 positional argument but 2 were given

I posted a question for the teacher, but he can take a long time to get around to answering questions. Here is the rest of my code. It is the very last line that causes the error.

import torch
import numpy as np
from matplotlib import pyplot as plt

device = torch.device('cpu')

noise_dim = 100

class Generator(torch.nn.Module):
def __init__(self):
super(Generator, self).__init__()
self.fcn = torch.nn.Sequential(
torch.nn.Linear(
in_features=noise_dim,
out_features=1200,
bias=True
),
torch.nn.ReLU(),
torch.nn.Dropout(),
torch.nn.Linear(
in_features=1200,
out_features=1200,
bias=True
),
torch.nn.ReLU(),
torch.nn.Dropout(),
torch.nn.Linear(
in_features=1200,
out_features=1200,
bias=True
),
torch.nn.ReLU(),
torch.nn.Dropout(),
torch.nn.Linear(
in_features=1200,
out_features=1200,
bias=True
),
torch.nn.Sigmoid()
)

def forward(self, batch):
ret=batch.view(batch.size(0), -1)
ret=self.fcn(ret)
return ret

class Maxout(torch.nn.Module):
def __(self, num_pieces):
super(Maxout, self).__init__()
self.num_pieces
def forward(self, x):
assert x.shape[1] % self.num_pieces == 0
ret = x.view(
*x.shape[:1],
x.shape[1] // self.num_pieces,
self.num_pieces,
*x.shape[2:]
)
ret, _ = ret.max(dim=2)
return ret

class Discriminator(torch.nn.Module):
def __init__(self):
super(Discriminator, self).__init__()
self.fcn = torch.nn.Sequential(
torch.nn.Linear(
in_features=784,
out_features=625,
bias=True
),
Maxout(5),
torch.nn.Linear(
in_features=125,
out_features=625,
bias=True
),
Maxout(5),
torch.nn.Linear(
in_features=125,
out_features=1,
bias=True
),
torch.nn.Sigmoid()
)

def forward(self, batch):
ret = batch.view(batch.size(0), -1)
ret = self.fcn(ret)
return ret

import torchvision

class FlattenTransform:
def __call__(self, inputs):
return inputs.view(inputs.shape[0], -1)

data_train = torchvision.datasets.MNIST(
'./data/mnist',
train=True,
download=True,
transform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
FlattenTransform()
])
)

BATCH_SIZE = 32

train_loader = torch.utils.data.DataLoader(
data_train,
batch_size=BATCH_SIZE,
shuffle=True,
num_workers=4
)

generator = Generator().to(device)
discriminator = Discriminator().to(device)

discriminator_optimizer = torch.optim.SGD(
discriminator.parameters(),
lr=0.0002,
momentum=0.5
)