I am a beginner in Pytorch. I am trying to implement a network in pytorch that I had built using keras earlier. Iam not sure what’s wrong in my implementation.

train_length–>25000

train_vecs --> (25000,10,10) ; train_labels -->(25000,1)

Here is my code:

train_tensor = torch.from_numpy(train_vecs)

train_labels_tensor = torch.from_numpy(train_labels)

class FirstNN(nn.Module):

def **init**(self):

super(FirstNN,self).**init**()

self.conv1 = nn.Conv1d(10,10,3)

self.conv2 = nn.Conv1d(10,20,3)

self.dropout = nn.Dropout(0.5)

self.dense_l1 = nn.Linear(120,40)

self.dense_l2 = nn.Linear(40,8)

self.dense_l3 = nn.Linear(8,1)

self.soft = nn.Sigmoid()

```
def forward(self,x):
out = F.relu(self.conv1(x))
out = self.dropout(out)
out = F.relu(self.conv2(out))
out = self.dropout(out)
out = out.view(out.size(0),-1)
out = self.dropout(F.relu(self.dense_l1(out)))
out = self.dropout(F.relu(self.dense_l2(out)))
out = self.dropout(F.relu(self.dense_l3(out)))
return self.soft(out)
```

batchsize = 25

numepochs = 25

n_batches = int(train_length/batchsize)

train_tensor = train_tensor.float()

def find_correct(yp,yp1):

correct = 0

for i in range(len(yp)):

if(yp[i]==yp1[i]):

correct+=1

return correct

for epoch in range(3):

for i in range(0,n_batches):

Xtrain = train_tensor[i*batchsize:(i+1)*batchsize, : , :]

ytrain = train_labels_tensor[i*batchsize:(i+1)*batchsize]

ytrain = ytrain.view(-1,1).float()

optimizer.zero_grad()

output = model(Xtrain)

loss = F.binary_cross_entropy(output, ytrain)

loss.backward()

optimizer.step()

```
output = model(train_tensor)
output = (output>=0.5).double()
correct = find_correct(output,train_labels_tensor)
print("Epoch {} : Loss {} : Accuracy {} ".format(epoch,loss.item(),correct/25000))
```

I am getting loss rates as : 0.67,0.74,0.73

Whereas in Keras I get : 0.60,0.42,0.38