I can’t start training an encoder model.
I always have this error and I cannot understand where I am wrong.
under the code.
class EncoderCell(nn.Module):
def __init__(self):
super(EncoderCell, self).__init__()
self.conv = nn.Conv2d(
3, 64, kernel_size=3, stride=2, padding=1, bias=False)
self.rnn1 = ConvGRUCell(
64,
256,
kernel_size=3,
stride=2,
padding=1,
hidden_kernel_size=1,
bias=False)
self.rnn2 = ConvGRUCell(
256,
512,
kernel_size=3,
stride=2,
padding=1,
hidden_kernel_size=1,
bias=False)
self.rnn3 = ConvGRUCell(
512,
512,
kernel_size=3,
stride=2,
padding=1,
hidden_kernel_size=1,
bias=False)
def forward(self, input, hidden1, hidden2, hidden3):
x = self.conv(input)
hidden1 = self.rnn1(x, hidden1)
x = hidden1[0]
hidden2 = self.rnn2(x, hidden2)
x = hidden2[0]
hidden3 = self.rnn3(x, hidden3)
x = hidden3[0]
return x, hidden1, hidden2, hidden3
class ConvGRUCell(ConvRNNCellBase):
def __init__(self,
input_channels,
hidden_channels,
kernel_size=3,
stride=1,
padding=0,
dilation=1,
hidden_kernel_size=1,
bias=True):
super(ConvGRUCell, self).__init__()
self.input_channels = input_channels
self.hidden_channels = hidden_channels
self.kernel_size = _pair(kernel_size)
self.stride = _pair(stride)
self.padding = _pair(padding)
self.dilation = _pair(dilation)
self.hidden_kernel_size = _pair(hidden_kernel_size)
hidden_padding = _pair(hidden_kernel_size // 2)
#gate_channels = 4 * self.hidden_channels
gate_channels = 3 * self.hidden_channels
self.conv_ih = nn.Conv2d(
in_channels=self.input_channels,
out_channels=gate_channels,
kernel_size=self.kernel_size,
stride=self.stride,
padding=self.padding,
dilation=self.dilation,
bias=bias)
self.conv_hh = nn.Conv2d(
in_channels=self.hidden_channels,
out_channels=gate_channels,
kernel_size=hidden_kernel_size,
stride=1,
padding=hidden_padding,
dilation=1,
bias=bias)
self.reset_parameters()