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 đượcfunc[x0, *args]
Hàm có đạo hàm cần kiểm tra
grad có thể gọi đượcgrad[x0, *args]
Jacobian của chức năng
x0 ndarrayCá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
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
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'
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'
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 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ọ