Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. import torch
  2. from torch.autograd import Variable
  3. import numpy as np
  4.  
  5. import torch.nn as nn
  6. import torch.nn.functional as F
  7. from torch.utils.data import DataLoader
  8.  
  9. import torchvision
  10. import torchvision.transforms as transforms
  11.  
  12.  
  13. EPOCH= 1000
  14.  
  15.  
  16. class my_network(nn.Module):
  17. def __init__(self):
  18. super(my_network, self).__init__()
  19.  
  20. self.conv1= nn.Conv2d(3,64,5)
  21. self.conv2= nn.Conv2d(64,30,5)
  22. self.fc1= nn.Linear(30*5*5, 128)
  23. self.fc2= nn.Linear(128, 10)
  24.  
  25. def forward(self,x):
  26. x= F.relu( self.conv1(x), inplace=True ) #28
  27. x= F.max_pool2d(x,(2,2)) #14
  28. x= F.relu(self.conv2(x), inplace=True) # 10
  29. x= F.max_pool2d(x,(2,2)) #5
  30. x= x.view(x.shape[0], -1)
  31. x=F.relu(self.fc1(x), inplace=True)
  32. x=F.relu(self.fc2(x), inplace=True)
  33.  
  34. return x
  35.  
  36.  
  37. if __name__ == "__main__":
  38.  
  39. #data load
  40. transform= transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])
  41.  
  42. trainset= torchvision.datasets.CIFAR10(root='./cifar10_data', train=True, download=True, transform=transform)
  43. testset= torchvision.datasets.CIFAR10(root='./cifar10_data', train=False, download=True, transform=transform)
  44.  
  45. trainloader= DataLoader(trainset, batch_size=64, shuffle=True, num_workers=2)
  46. testloader= DataLoader(testset, batch_size=64, shuffle=True, num_workers=2)
  47.  
  48. #train
  49. my_net= my_network()
  50. my_net.to('cuda')
  51.  
  52. optim= torch.optim.SGD(my_net.parameters(), lr=0.0003, momentum=0.9)
  53. loss_function= nn.CrossEntropyLoss()
  54.  
  55. for epoch in range(EPOCH):
  56. for i, data in enumerate(trainloader,8):
  57. inputs, labels= data
  58. inputs, labels= Variable(inputs.cuda()), Variable(labels.cuda())
  59.  
  60. optim.zero_grad()
  61. out= my_net(inputs)
  62. loss= loss_function(out, labels)
  63. loss.backward()
  64. optim.step()
  65.  
  66. if i%100==0:
  67. print("{}-{} loss:{:.5f}".format(epoch, i, loss))
  68.  
  69. #test
  70. total=0
  71. correct=0
  72. for data2 in testloader:
  73. images, labels= data2
  74. images, labels= Variable(images.cuda()), Variable(labels.cuda())
  75. outputs= my_net(images)
  76. #print(outputs.data)
  77. _, predicted= torch.max(outputs, 1)
  78. #print(predicted.data)
  79. #print(labels.data)
  80. #exit()
  81. total+= labels.size(0)
  82. correct += (predicted == labels).sum()
  83. print("[{}] acc:{:.5f}".format(epoch, correct.type(torch.float32)/total))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement