Th3NiKo

Ready Neural

Nov 27th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. #!/usr/bin/python3
  2. import torch
  3. from torch import nn
  4. from torch import optim
  5. import random
  6.  
  7. model = nn.Sequential(
  8.     nn.Linear(2,2),
  9.     nn.Sigmoid(),
  10.     nn.Linear(2,1),
  11.     nn.Sigmoid())
  12.  
  13. learning_rate = torch.tensor(0.0001)
  14. minibatch_size = 25
  15.  
  16. criterion = nn.MSELoss()
  17. #optimizer = optim.SGD(model.parameters(),lr=learning_rate,momentum=0.9)
  18. optimizer = optim.Adam(model.parameters())
  19. def get_item():
  20.     x1 = random.choice([0,1])
  21.     x2 = random.choice([0,1])
  22.     x = torch.tensor([x1,x2],dtype=torch.float)
  23.     yexpected = torch.tensor(float(x1 ^ x2))
  24.     return x,yexpected
  25.  
  26.  
  27. for i in range(100000):
  28.     optimizer.zero_grad()
  29.     xb = []
  30.     yexpectedb = []
  31.     for _ in range(1,minibatch_size):
  32.         x1,yexpected1 = get_item()
  33.         xb.append(x1)
  34.         yexpectedb.append(yexpected1)
  35.  
  36.     x = torch.stack(xb)
  37.     yexpectedb = torch.stack(yexpectedb)
  38.     yp = model(x)
  39.     y = torch.squeeze(yp)
  40.     loss = criterion(y,yexpectedb)
  41.     print(loss)
  42.     loss.backward()
  43.     optimizer.step()
Advertisement
Add Comment
Please, Sign In to add comment