so i am trying to implement the VGG network, everything in the paper, but i have when i am using the architecture that has a conv1-255 as part of it network. below is my code
def _make_convo_layers(architecture) -> torch.nn.Sequential:
"""
Create convolutional layers from the vgg architecture type passed in.
:param architecture:
"""
layers = []
in_channels = 3
for layer in architecture:
if type(layer) == int:
out_channels = layer
layers += [nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1, stride=1), nn.ReLU()]
# layers.append([nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1, stride=1) + nn.ReLU()])
in_channels = layer
elif (layer == 'Conv1-256'):
out_channels = 256
layers += [nn.Conv1d(256, out_channels, kernel_size=3, padding=1, stride=1), nn.ReLU()]
elif (layer == 'LRN'):
layers += [nn.LocalResponseNorm(5, alpha=0.0001, beta=0.75, k=1)]
elif (layer == 'M'):
layers += [nn.MaxPool2d(kernel_size=2, stride=2)]
return nn.Sequential(*layers)
below is me passing some random data to the model
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(device)
vgg = VGGNet(config['vgg16-C1']).to(device)
x = torch.randn(1, 3, 224, 224).to(device)
model = vgg(x).to(device)
print(model.shape)
below is the error i received when i passed the x variable to the model
RuntimeError: Expected 3-dimensional input for 3-dimensional weight [256, 256, 3], but got 4-dimensional input of size [1, 256, 56, 56] instead
any help, will do please