You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Neural_Network.py 3.0 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import torch
  2. import torch.nn as nn
  3. import torch.nn.functional as F
  4. import torch.optim as optim
  5. from torch.autograd import Variable
  6. from torchvision import datasets, transforms
  7. # Training settings
  8. batch_size = 64
  9. # MNIST Dataset
  10. dataset_path = "../data/mnist"
  11. train_dataset = datasets.MNIST(root=dataset_path,
  12. train=True,
  13. transform=transforms.ToTensor(),
  14. download=True)
  15. test_dataset = datasets.MNIST(root=dataset_path,
  16. train=False,
  17. transform=transforms.ToTensor())
  18. # Data Loader (Input Pipeline)
  19. train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
  20. batch_size=batch_size,
  21. shuffle=True)
  22. test_loader = torch.utils.data.DataLoader(dataset=test_dataset,
  23. batch_size=batch_size,
  24. shuffle=False)
  25. # define Network
  26. class Net(nn.Module):
  27. def __init__(self):
  28. super(Net, self).__init__()
  29. self.l1 = nn.Linear(784, 520)
  30. self.l2 = nn.Linear(520, 320)
  31. self.l3 = nn.Linear(320, 240)
  32. self.l4 = nn.Linear(240, 120)
  33. self.l5 = nn.Linear(120, 10)
  34. def forward(self, x):
  35. x = x.view(-1, 784) # Flatten the data (n, 1, 28, 28)-> (n, 784)
  36. x = F.relu(self.l1(x))
  37. x = F.relu(self.l2(x))
  38. x = F.relu(self.l3(x))
  39. x = F.relu(self.l4(x))
  40. return self.l5(x)
  41. model = Net()
  42. criterion = nn.CrossEntropyLoss()
  43. optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)
  44. def train(epoch):
  45. model.train()
  46. for batch_idx, (data, target) in enumerate(train_loader):
  47. data, target = Variable(data), Variable(target)
  48. optimizer.zero_grad()
  49. output = model(data)
  50. loss = criterion(output, target)
  51. loss.backward()
  52. optimizer.step()
  53. if batch_idx % 100 == 0:
  54. print("Train epoch: %6d [%6d/%6d (%.0f %%)] \t Loss: %.6f" % (
  55. epoch, batch_idx * len(data), len(train_loader.dataset),
  56. 100. * batch_idx / len(train_loader), loss.data[0]) )
  57. def test():
  58. model.eval()
  59. test_loss = 0.0
  60. correct = 0.0
  61. for data, target in test_loader:
  62. data, target = Variable(data), Variable(target)
  63. output = model(data)
  64. # sum up batch loss
  65. test_loss += criterion(output, target).data[0]
  66. # get the index of the max
  67. pred = output.data.max(1, keepdim=True)[1]
  68. correct += float(pred.eq(target.data.view_as(pred)).cpu().sum())
  69. test_loss /= len(test_loader.dataset)
  70. print("\nTest set: Average loss: %.4f, Accuracy: %6d/%6d (%4.2f %%)\n" %
  71. (test_loss,
  72. correct, len(test_loader.dataset),
  73. 100.0*correct / len(test_loader.dataset)) )
  74. for epoch in range(1, 10):
  75. train(epoch)
  76. test()

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。