pytorch error in multiplying matrices in neural network
I was trying to make a Neural Network in PyTorch, however I ran into the error below. I'm still new to this topic so I am not able to understand how I should go about solving this.

Code:
class ANN_Model(nn.Module):
    def __init__(self,input_features=8,hidden1=8,hidden2=200,hidden3=200,hidden4=300,hidden5=300,hidden6=400,hidden7=400,hidden8=300,hidden9=300,out_features=2):
        super().__init__()
        self.f_connected1=nn.Linear(input_features,hidden1)
        self.f_connected2=nn.Linear(hidden1,hidden2)
        self.f_connected2=nn.Linear(hidden2,hidden3)
        self.f_connected2=nn.Linear(hidden3,hidden4)
        self.f_connected2=nn.Linear(hidden4,hidden5)
        self.f_connected2=nn.Linear(hidden5,hidden6)
        self.f_connected2=nn.Linear(hidden6,hidden7)
        self.f_connected2=nn.Linear(hidden7,hidden8)
        self.f_connected2=nn.Linear(hidden8,hidden9)
        self.out=nn.Linear(hidden9,out_features)
    def forward(self,x):
        x=F.relu(self.f_connected1(x))
        x=F.relu(self.f_connected2(x))
        x=F.relu(self.f_connected3(x))
        x=F.relu(self.f_connected4(x))
        x=F.relu(self.f_connected5(x))
        x=F.relu(self.f_connected6(x))
        x=F.relu(self.f_connected7(x))
        x=F.relu(self.f_connected8(x))
        x=F.relu(self.f_connected9(x))
        x=self.out(x)
        return x
loss_function = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr = 0.01) 
epochs = 500
final_losses = []
for i in range(epochs):
    i = i + 1
    y_pred = model.forward(X_train)
    loss=loss_function(y_pred, y_train)
    final_losses.append(loss.item())
    if i%10==1:
        print(&quot;Epoch number: {} and the loss: {}&quot;.format(i, loss.item()))
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Input In [13], in &lt;cell line: 3&gt;()
      3 for i in range(epochs):
      4     i = i + 1
----&gt; 5     y_pred = model.forward(X_train)
      6     loss=loss_function(y_pred, y_train)
      7     final_losses.append(loss.item())

Input In [8], in ANN_Model.forward(self, x)
     14 def forward(self,x):
     15     x=F.relu(self.f_connected1(x))
---&gt; 16     x=F.relu(self.f_connected2(x))
     17     x=F.relu(self.f_connected3(x))
     18     x=F.relu(self.f_connected4(x))

File ~/miniconda3/lib/python3.9/site-packages/torch/nn/modules/module.py:1130, in Module._call_impl(self, *input, **kwargs)
   1126 # If we don't have any hooks, we want to skip the rest of the logic in
   1127 # this function, and just call forward.
   1128 if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks
   1129         or _global_forward_hooks or _global_forward_pre_hooks):
-&gt; 1130     return forward_call(*input, **kwargs)
   1131 # Do not call functions when jit is used
   1132 full_backward_hooks, non_full_backward_hooks = [], []

File ~/miniconda3/lib/python3.9/site-packages/torch/nn/modules/linear.py:114, in Linear.forward(self, input)
    113 def forward(self, input: Tensor) -&gt; Tensor:
--&gt; 114     return F.linear(input, self.weight, self.bias)

RuntimeError: mat1 and mat2 shapes cannot be multiplied (691x8 and 300x300)

I was trying to make a Neural Network in PyTorch, however I ran into the error below. I'm still new to this topic so I am not able to understand how I should go about solving this.

I found it, in your model's constructor __init__ every layer is named self.f_connected2 and because of that it expects a shape of (batch_size,300).
