Here, there should be 2 Linear layers:
self.linear1 = nn.Linear(in_features=36864, out_features=512)
self.linear2 = nn.Linear(in_features=512, out_features=1)

and
x = x.view(x.size(0), 144*16*16) # Flatten(),
x = F.relu(self.linear1(x)) #Dense(512),
x = self.linear2(x) #Dense(n_outputs, activation=None)

Another thing is adding BatchNorm:
self.batch_norm_0 = nn.BatchNorm2d(c)

And in forward:
x = F.relu(self.conv0(x))
x = batch_norm_0(x)