Làm cách nào để sử dụng “torch.no_grad” trong PyTorch?

Lam Cach Nao De Su Dung Torch No Grad Trong Pytorch



Việc tính toán độ dốc cho các lớp của mạng lưới thần kinh là một tính năng tích hợp của khung PyTorch. Người dùng có thể đánh giá kết nối giữa các lớp liền kề khi độ dốc được tính toán trong quá trình truyền ngược. Tuy nhiên, điều này gây tổn hại cho phần cứng vì khối lượng dữ liệu lớn phải được xử lý và trong trường hợp này là “ ngọn đuốc.no_grad ” có thể được sử dụng để tạm dừng tính toán độ dốc bất cứ khi nào cần thiết.

Trong blog này, chúng ta sẽ thảo luận về cách sử dụng “ ngọn đuốc.no_grad ” phương thức trong PyTorch.

Phương thức “torch.no_grad” trong PyTorch là gì?

Các ' ngọn đuốc.no_grad ” được sử dụng để quản lý bối cảnh trong khung phát triển PyTorch. Mục đích của nó là dừng việc tính toán độ dốc cho kết nối giữa các lớp tiếp theo của mô hình học sâu. Tính hữu ích của phương pháp này là khi không yêu cầu độ dốc trong một mô hình cụ thể, chúng có thể bị vô hiệu hóa để phân bổ thêm tài nguyên phần cứng cho việc xử lý vòng huấn luyện của mô hình.







Làm cách nào để sử dụng phương pháp “torch.no_grad” trong PyTorch?

Độ dốc được tính toán trong quá trình truyền ngược trong PyTorch. Theo mặc định, PyTorch đã kích hoạt tính năng phân biệt tự động cho tất cả các mô hình học máy. Việc vô hiệu hóa tính toán gradient là điều cần thiết đối với các nhà phát triển không có đủ tài nguyên xử lý phần cứng.



Hãy làm theo các bước bên dưới để tìm hiểu cách sử dụng “ ngọn đuốc.no_grad ” phương pháp vô hiệu hóa tính toán độ dốc trong PyTorch:







Bước 1: Khởi chạy Colab IDE

Google Colaboratory là một lựa chọn nền tảng tuyệt vời để phát triển các dự án sử dụng khung PyTorch nhờ có GPU chuyên dụng. Đi đến Colab trang mạng và mở một “ Sổ tay mới ” như được hiển thị:



Bước 2: Cài đặt và nhập thư viện Torch

Tất cả chức năng của PyTorch được gói gọn trong “ ngọn đuốc ' thư viện. Việc cài đặt và nhập nó là cần thiết trước khi bắt đầu công việc. Các ' !pip ” gói cài đặt của Python được sử dụng để cài đặt các thư viện và được nhập vào dự án bằng lệnh “ nhập khẩu ' yêu cầu:

!pip cài đặt ngọn đuốc
ngọn đuốc nhập khẩu

Bước 3: Xác định Tensor PyTorch bằng gradient

Thêm một tenxơ PyTorch vào dự án bằng cách sử dụng “ ngọn đuốc.tensor() ' phương pháp. Sau đó, cung cấp cho nó một gradient hợp lệ bằng cách sử dụng “ require_grad=Đúng ” như trong đoạn mã dưới đây:

A = torch.tensor([5.0], require_grad=True)

Bước 4: Sử dụng phương pháp “torch.no_grad” để xóa gradient

Tiếp theo, xóa gradient khỏi tensor được xác định trước đó bằng cách sử dụng “ ngọn đuốc.no_grad ' phương pháp:

với ngọn đuốc.no_grad():
B = A**2 + 16

Đoạn mã trên hoạt động như sau:

  • Các ' no_grad() ” phương thức được sử dụng bên trong một “ với ' vòng.
  • Mỗi tenxơ chứa trong vòng lặp đều bị loại bỏ độ dốc.
  • Cuối cùng, xác định một phép tính số học mẫu bằng cách sử dụng tensor đã xác định trước đó và gán nó cho “ B ” biến như được hiển thị ở trên:

Bước 5: Xác minh loại bỏ gradient

Bước cuối cùng là xác minh những gì vừa được thực hiện. Độ dốc từ tensor “ MỘT ” đã bị xóa và nó phải được kiểm tra ở đầu ra bằng cách sử dụng “ in() ' phương pháp:

print('Tính toán độ dốc với torch.no_grad: ', A.grad)
print('\n Tensor gốc: ', A)
print('\nTính toán số học mẫu: ', B)

Đoạn mã trên hoạt động như sau:

  • Các ' tốt nghiệp ” phương thức cho chúng ta gradient của tensor “ MỘT ”. Nó không hiển thị gì ở đầu ra bên dưới vì độ dốc đã bị xóa bằng cách sử dụng “ ngọn đuốc.no_grad ' phương pháp.
  • Tensor ban đầu vẫn cho thấy rằng nó có độ dốc như được nhìn thấy từ “ require_grad=Đúng ” câu lệnh ở đầu ra.
  • Cuối cùng, phép tính số học mẫu cho thấy kết quả của phương trình được xác định trước đó:

Ghi chú : Bạn có thể truy cập Colab Notebook của chúng tôi tại đây liên kết .

Mẹo chuyên nghiệp

Các ' ngọn đuốc.no_grad ” là phương pháp lý tưởng khi không cần độ dốc hoặc khi cần giảm tải xử lý trên phần cứng. Một cách sử dụng khác của phương pháp này là trong quá trình suy luận vì mô hình chỉ được sử dụng để đưa ra dự đoán dựa trên dữ liệu mới. Vì không cần đào tạo nên việc vô hiệu hóa tính toán độ dốc là hoàn toàn hợp lý.

Thành công! Chúng tôi đã chỉ cho bạn cách sử dụng phương pháp “torch.no_grad” để tắt độ dốc trong PyTorch.

Phần kết luận

Sử dụng ' ngọn đuốc.no_grad ” trong PyTorch bằng cách định nghĩa nó bên trong một “ với ” và tất cả các tenxơ chứa trong đó sẽ bị loại bỏ độ dốc. Điều này sẽ mang lại sự cải thiện về tốc độ xử lý và ngăn chặn sự tích tụ độ dốc trong vòng lặp đào tạo. Trong blog này, chúng tôi đã giới thiệu cách thức “ ngọn đuốc.no_grad ” có thể được sử dụng để vô hiệu hóa độ dốc của các tensor đã chọn trong PyTorch.