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.

2_poly_fitting_0.py 2.3 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import numpy as np
  2. import torch
  3. from torch.autograd import Variable
  4. import matplotlib.pyplot as plt
  5. """
  6. Polynomial fitting by pytorch
  7. """
  8. # define the model's parameters
  9. w_target = np.array([0.5, 3, 2.4])
  10. b_target = np.array([0.9])
  11. f_des = "y = %f + %f * x + %f * x^2 + %f * x^3" % (
  12. b_target[0],
  13. w_target[0], w_target[1], w_target[2])
  14. print(f_des)
  15. # draw the data
  16. x_sample = np.arange(-3, 3.1, 0.1)
  17. y_sample = b_target[0] + w_target[0]*x_sample + w_target[1]*x_sample**2 + w_target[2]*x_sample**3
  18. plt.plot(x_sample, y_sample, label="Real")
  19. plt.legend()
  20. plt.show()
  21. # construct variabels
  22. x_train = np.stack([x_sample**i for i in range(1, 4)], axis=1)
  23. x_train = torch.from_numpy(x_train).float()
  24. y_train = torch.from_numpy(y_sample).float().unsqueeze(1)
  25. # define model parameters
  26. w = Variable(torch.randn(3, 1).float(), requires_grad=True)
  27. b = Variable(torch.zeros(1).float(), requires_grad=True)
  28. x_train = Variable(x_train)
  29. y_train = Variable(y_train)
  30. print(w.shape)
  31. print(b.shape)
  32. print(x_train.shape)
  33. print(y_train.shape)
  34. def polynomial(x):
  35. return torch.mm(x, w) + b
  36. def get_loss(y_pred, y):
  37. return torch.mean((y_pred-y)**2)
  38. # draw initial graph
  39. y_pred = polynomial(x_train)
  40. plt.plot(x_train.data.numpy()[:, 0], y_sample, label="Real", color='b')
  41. plt.plot(x_train.data.numpy()[:, 0], y_pred.data.numpy(), label="Fitting", color='r')
  42. plt.legend()
  43. plt.show()
  44. # compute loss
  45. loss = get_loss(y_pred, y_train)
  46. print("Loss = %f" % loss)
  47. loss.backward()
  48. print(w.grad)
  49. print(b.grad)
  50. eta = 0.001
  51. w.data = w.data - eta*w.grad.data
  52. b.data = b.data - eta*b.grad.data
  53. # second draw
  54. y_pred = polynomial(x_train)
  55. plt.plot(x_train.data.numpy()[:, 0], y_sample, label="Real", color='b')
  56. plt.plot(x_train.data.numpy()[:, 0], y_pred.data.numpy(), label="Fitting", color='r')
  57. plt.legend()
  58. plt.show()
  59. for i in range(100):
  60. y_pred = polynomial(x_train)
  61. loss = get_loss(y_pred, y_train)
  62. w.grad.data.zero_()
  63. b.grad.data.zero_()
  64. loss.backward()
  65. w.data = w.data - eta*w.grad.data
  66. b.data = b.data - eta*b.grad.data
  67. print("epoch: %4d, loss: %f" % (i, loss.data[0]))
  68. # second draw
  69. y_pred = polynomial(x_train)
  70. plt.plot(x_train.data.numpy()[:, 0], y_sample, label="Real", color='b')
  71. plt.plot(x_train.data.numpy()[:, 0], y_pred.data.numpy(), label="Fitting", color='r')
  72. plt.legend()
  73. plt.show()

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