Tốt nghiệp Python

Kiểm tra tính chính xác của hàm gradient bằng cách so sánh nó với phép xấp xỉ sai phân hữu hạn [chuyển tiếp] của gradient

Thông số . func có thể gọi được func[x0, *args]

Hàm có đạo hàm cần kiểm tra

grad có thể gọi được grad[x0, *args]

Jacobian của chức năng

x0 ndarray

Các điểm để kiểm tra grad so với xấp xỉ chênh lệch chuyển tiếp của grad bằng cách sử dụng func

args * đối số, tùy chọn

Đối số bổ sung được chuyển đến func và grad

epsilon phao, tùy chọn

Kích thước bước được sử dụng cho xấp xỉ sai phân hữu hạn. Nó mặc định là sqrt[np.finfo[float].eps], tức là khoảng 1. 49e-08

hướng str, tùy chọn

Nếu được đặt thành 'random', thì độ dốc dọc theo một vectơ ngẫu nhiên được sử dụng để kiểm tra độ dốc so với xấp xỉ chênh lệch thuận bằng cách sử dụng hàm. Theo mặc định, nó là 'all', trong trường hợp đó, tất cả các vectơ chỉ hướng nóng được coi là kiểm tra cấp độ. Nếu func là một hàm có giá trị vectơ thì chỉ có thể sử dụng 'all'

hạt {Không, int, , }, tùy chọn

Nếu hạt giống là Không có [hoặc np. ngẫu nhiên], singleton được sử dụng. Nếu hạt giống là một số nguyên, một thể hiện func[x0, *args]0 mới được sử dụng, được gieo bằng hạt giống. Nếu seed đã là một phiên bản func[x0, *args]1 hoặc func[x0, *args]0 thì phiên bản đó được sử dụng. Chỉ định hạt giống để tái tạo giá trị trả về từ hàm này. Các số ngẫu nhiên được tạo bằng hạt giống này ảnh hưởng đến vectơ ngẫu nhiên dọc theo đó độ dốc được tính toán để kiểm tra func[x0, *args]3. Lưu ý rằng hạt giống chỉ được sử dụng khi đối số hướng được đặt thành 'ngẫu nhiên'

Trả về . err trôi nổi

Căn bậc hai của tổng các bình phương [i. e. , chuẩn 2] của hiệu giữa grad[x0, *args] và xấp xỉ sai phân hữu hạn của grad sử dụng hàm tại các điểm x0

Ghi chú. Autograd vẫn đang được duy trì nhưng không còn được phát triển tích cực. Các nhà phát triển chính [Dougal Maclaurin, David Duvenaud, Matt Johnson và Jamie Townsend] hiện đang làm việc trên JAX, với Dougal và Matt làm việc toàn thời gian cho nó. JAX kết hợp phiên bản Autograd mới với các tính năng bổ sung như biên dịch jit

Autograd

Autograd có thể tự động phân biệt mã Python và mã Numpy gốc. Nó có thể xử lý một tập hợp con lớn các tính năng của Python, bao gồm vòng lặp, if, đệ quy và bao đóng, và thậm chí nó có thể lấy đạo hàm của đạo hàm của đạo hàm. Nó hỗ trợ phân biệt chế độ đảo ngược [a. k. a. lan truyền ngược], có nghĩa là nó có thể lấy độ dốc của các hàm có giá trị vô hướng một cách hiệu quả đối với các đối số có giá trị mảng, cũng như phân biệt chế độ chuyển tiếp và cả hai có thể được kết hợp tùy ý. Ứng dụng dự định chính của Autograd là tối ưu hóa dựa trên độ dốc. Để biết thêm thông tin, hãy xem hướng dẫn và thư mục ví dụ

Sử dụng một ví dụ

>>> import autograd.numpy as np  # Thinly-wrapped numpy
>>> from autograd import grad    # The only autograd function you may ever need
>>>
>>> def tanh[x]:                 # Define a function
..     y = np.exp[-2.0 * x]
..     return [1.0 - y] / [1.0 + y]
...
>>> grad_tanh = grad[tanh]       # Obtain its gradient function
>>> grad_tanh[1.0]               # Evaluate the gradient at x = 1.0
0.41997434161402603
>>> [tanh[1.0001] - tanh[0.9999]] / 0.0002  # Compare to finite differences
0.41997434264973155

Chúng ta có thể tiếp tục phân biệt bao nhiêu lần tùy thích và sử dụng vectơ hóa các hàm có giá trị vô hướng của numpy trên nhiều giá trị đầu vào khác nhau

>>> from autograd import elementwise_grad as egrad  # for functions that vectorize over inputs
>>> import matplotlib.pyplot as plt
>>> x = np.linspace[-7, 7, 200]
>>> plt.plot[x, tanh[x],
..          x, egrad[tanh][x],                                     # first  derivative
..          x, egrad[egrad[tanh]][x],                              # second derivative
..          x, egrad[egrad[egrad[tanh]]][x],                       # third  derivative
..          x, egrad[egrad[egrad[egrad[tanh]]]][x],                # fourth derivative
..          x, egrad[egrad[egrad[egrad[egrad[tanh]]]]][x],         # fifth  derivative
..          x, egrad[egrad[egrad[egrad[egrad[egrad[tanh]]]]]][x]]  # sixth  derivative
>>> plt.show[]

Xem tệp ví dụ tanh để biết mã

Tài liệu

Bạn có thể tìm thấy một hướng dẫn ở đây

Ví dụ từ đầu đến cuối

  • Một mạng lưới thần kinh đơn giản
  • Mạng nơ ron tích chập
  • Mạng lưới thần kinh tái phát
  • LSTM
  • Máy Turing thần kinh
  • Lan truyền ngược thông qua mô phỏng chất lỏng

  • Suy luận đa dạng trong mạng lưới thần kinh Bayesian
  • Hồi quy quá trình Gaussian
  • Sampyl, một gói Python MCMC thuần túy với HMC và NUTS

Cài đặt thế nào

Chỉ cần chạy pip install autograd

tác giả

Autograd được viết bởi Dougal Maclaurin, David Duvenaud, Matt Johnson, Jamie Townsend và nhiều cộng tác viên khác. Gói hiện vẫn đang được duy trì, nhưng không còn được phát triển tích cực nữa. Vui lòng gửi bất kỳ lỗi hoặc yêu cầu tính năng nào. Chúng tôi cũng muốn nghe về trải nghiệm của bạn với autograd nói chung. Gửi email cho chúng tôi

Chúng tôi muốn cảm ơn Jasper Snoek và phần còn lại của nhóm HIPS [dẫn đầu bởi Giáo sư. Ryan P. Adams] vì những đóng góp và lời khuyên hữu ích; . [Lyric Labs] và Samsung Advanced Institute of Technology vì sự hỗ trợ hào phóng của họ

Độ dốc của một chức năng là gì?

Gradient của một hàm, f[x, y], theo hai chiều được định nghĩa là. gradf[x, y] = Vf[x, y] = ∂f ∂x i + ∂f ∂y j . Độ dốc của một hàm là một trường vectơ. Nó có được bằng cách áp dụng toán tử vectơ V cho hàm vô hướng f[x, y]. Trường vectơ như vậy được gọi là trường vectơ gradient [hoặc bảo toàn].

Độ dốc trong Pytorch là gì?

Độ dốc được dùng để tìm đạo hàm của hàm . Về mặt toán học, đạo hàm có nghĩa là đạo hàm từng phần của một hàm và tìm giá trị. Dưới đây là sơ đồ cách tính đạo hàm của hàm số.

Autograd hoạt động như thế nào với Python?

Autograd là một hệ thống phân biệt tự động đảo ngược. Về mặt khái niệm, autograd ghi lại một biểu đồ ghi lại tất cả các hoạt động đã tạo dữ liệu khi bạn thực hiện các hoạt động, cung cấp cho bạn một biểu đồ tuần hoàn có hướng có các lá là tenxơ đầu vào và gốc là tenxơ đầu ra

Chủ Đề