tek4

Giới Thiệu Pytorch – Lập Trình Neural Network Với Pytorch Bài 1

by - September. 25, 2021
Kiến thức
Python
Machine Learning
<p style="text-align: justify;"><em>Ch&agrave;o mừng c&aacute;c bạn đến với b&agrave;i viết đầu ti&ecirc;n trong loạt b&agrave;i về <a href="https://tek4.vn/lap-trinh-neural-network-voi-pytorch-deep-learning-voi-pytorch/" target="_blank" rel="noopener"><strong>Lập Tr&igrave;nh Neural Network Với Pytorch</strong></a>. B&agrave;i viết n&agrave;y sẽ giới thiệu để c&aacute;c bạn l&agrave;m quen với pytorch, lược sử h&igrave;nh th&agrave;nh, c&aacute;c th&agrave;nh phần ch&iacute;nh của pytorch m&agrave; ch&uacute;ng ta sử dụng khi x&acirc;y dựng mạng neural, l&yacute; giải tại sao ch&uacute;ng ta lại sử dụng pytorch... Đ&acirc;y l&agrave; tiền đề để c&aacute;c bạn c&oacute; được c&aacute;i nh&igrave;n tổng quan về pytorch trước khi bắt đầu l&agrave;m việc với n&oacute;, ch&iacute;nh v&igrave; thế đừng bỏ qua b&agrave;i viết n&agrave;y nh&eacute;. C&ograve;n b&acirc;y giờ "Bắt đầu th&ocirc;i".</em></p> <p style="text-align: justify;">&nbsp;</p> <p style="text-align: justify;"><img style="width: 100%;" src="http://tek4vn.2soft.top/public_files/capture-125-png-1" alt="Capture-125" /></p> <p style="text-align: justify;">&nbsp;</p> <p style="text-align: justify;">Pytorch l&agrave; framework Deep Learning cho ph&eacute;p lập tr&igrave;nh tr&ecirc;n Python.&nbsp;Tr&ecirc;n thực tế, PyTorch kh&ocirc;ng chỉ l&agrave; framework Deep Learning, m&agrave; ch&iacute;nh l&agrave; 1 package về t&iacute;nh to&aacute;n khoa học (scientific computing) như t&agrave;i liệu ch&iacute;nh thức của PyTorch đ&atilde; đề cập.&nbsp;Kh&iacute;a cạnh t&iacute;nh to&aacute;n khoa học của PyTorch chủ yếu l&agrave; tensors (sẽ được tr&igrave;nh b&agrave;y kỹ hơn trong <a href="https://tek4.vn/gioi-thieu-tensors-lap-trinh-neural-network-voi-pytorch-bai-4/" target="_blank" rel="noopener">B&agrave;i 4: Giới thiệu tensors</a>)</p> <pre><code>Tensor l&agrave; một mảng n chiều (A&nbsp;tensor&nbsp;is an n-dimensional array).</code></pre> <p style="text-align: justify;"><img style="width: 100%;" src="http://tek4vn.2soft.top/public_files/1-2-png" alt="1-2" /></p> <p style="text-align: justify;"><strong>V&iacute; dụ: </strong>C&aacute;c đối tượng&nbsp;<em>torch.Tensor </em>trong&nbsp;PyTorch&nbsp;được tạo từ c&aacute;c đối tượng<em> ndarray</em>&nbsp;trong NumPy.&nbsp;Điều n&agrave;y l&agrave;m cho việc chuyển đổi giữa PyTorch v&agrave; NumPy trở n&ecirc;n đơn giản hơn.</p> <p style="text-align: justify;">Tensors cực kỳ quan trọng đối với học s&acirc;u v&agrave; mạng neural v&igrave; ch&uacute;ng l&agrave; cấu tr&uacute;c dữ liệu&nbsp;cuối c&ugrave;ng m&agrave; ch&uacute;ng ta sử dụng để x&acirc;y dựng v&agrave; đ&agrave;o tạo mạng neural của m&igrave;nh.</p> <h3 style="text-align: justify;">Lược Sử Pytorch</h3> <p style="text-align: justify;">Bản ph&aacute;t h&agrave;nh đầu ti&ecirc;n của PyTorch l&agrave; v&agrave;o th&aacute;ng 10 năm 2016 Trước khi PyTorch được tạo ra, đ&atilde; c&oacute; v&agrave; tồn tại một framework kh&aacute;c c&oacute; t&ecirc;n l&agrave; Torch.&nbsp;Torch l&agrave; một machine learning framework đ&atilde; tồn tại kh&aacute; l&acirc;u v&agrave; dựa tr&ecirc;n ng&ocirc;n ngữ lập tr&igrave;nh <a href="https://en.wikipedia.org/wiki/Lua_(programming_language)" target="_blank" rel="noopener">Lua</a>.</p> <p style="text-align: justify;">Soumith Chintala được ghi nhận l&agrave; người khởi động dự &aacute;n PyTorch v&agrave; l&yacute; do tạo ra PyTorch của anh ấy kh&aacute; đơn giản đ&oacute; l&agrave; phi&ecirc;n bản Lua của Torch đ&atilde; cũ v&agrave; v&igrave; vậy cần c&oacute; phi&ecirc;n bản mới hơn được viết bằng Python. Kết quả l&agrave; PyTorch ra đời.</p> <p class="sub-section-heading" style="text-align: justify;"><strong>Facebook Đ&atilde; Tạo PyTorch:&nbsp;</strong>Một điều m&agrave; bạn c&oacute; thể nghe về PyTorch l&agrave; n&oacute; được tạo ra v&agrave; được duy tr&igrave; bởi Facebook.&nbsp;Điều n&agrave;y l&agrave; do Soumith Chintala đ&atilde; l&agrave;m việc tại Facebook AI Research khi PyTorch được tạo ra.</p> <h3 class="section-heading" style="text-align: justify;">Deep Learning Với PyTorch</h3> <p style="text-align: justify;">Bảng dưới đ&acirc;y cung cấp cho ch&uacute;ng ta danh s&aacute;ch c&aacute;c&nbsp;packages của Pytorch v&agrave; m&ocirc; tả tương ứng của ch&uacute;ng. Đ&acirc;y l&agrave; c&aacute;c packages ch&iacute;nh của&nbsp; PyTorch&nbsp; m&agrave;&nbsp;ch&uacute;ng ta sẽ t&igrave;m hiểu v&agrave; sử dụng khi x&acirc;y dựng mạng neural trong loạt b&agrave;i n&agrave;y.</p> <table class=" aligncenter" style="height: 340px; width: 793px;" width="791"> <tbody> <tr> <td style="text-align: center;"><strong>Package</strong></td> <td style="text-align: center;"><strong>M&ocirc; Tả&nbsp;&nbsp;</strong></td> </tr> <tr> <td>torch</td> <td>PyTorch package cấp cao nhất&nbsp;v&agrave; thư viện tensor.</td> </tr> <tr> <td>torch.nn</td> <td>Một&nbsp;subpackage chứa c&aacute;c&nbsp;modules v&agrave; c&aacute;c&nbsp;classes&nbsp;c&oacute; thể mở rộng để x&acirc;y dựng mạng neural.</td> </tr> <tr> <td>torch.autograd</td> <td>Một&nbsp;subpackage&nbsp;hỗ trợ tất cả c&aacute;c hoạt động Tensor kh&aacute;c nhau trong PyTorch.</td> </tr> <tr> <td>torch.nn.functional</td> <td>Một functional interface&nbsp;chứa c&aacute;c hoạt động điển h&igrave;nh được sử dụng để x&acirc;y dựng mạng neural như&nbsp;loss functions, activation functions v&agrave; convolution operations.</td> </tr> <tr> <td>torch.optim</td> <td>Một subpackage&nbsp;chứa c&aacute;c hoạt động tối ưu h&oacute;a ti&ecirc;u chuẩn như SGD v&agrave; Adam.</td> </tr> <tr> <td>torch.utils</td> <td>Một subpackage&nbsp;chứa c&aacute;c lớp tiện &iacute;ch như&nbsp;data sets v&agrave; data loaders gi&uacute;p cho việc tiền xử l&yacute; dữ liệu&nbsp;dễ d&agrave;ng hơn.</td> </tr> <tr> <td>torchvision</td> <td>Một package cung cấp quyền truy cập v&agrave;o c&aacute;c tập dữ liệu phổ biến, kiến ​​tr&uacute;c m&ocirc; h&igrave;nh v&agrave; c&aacute;c ph&eacute;p biến đổi h&igrave;nh ảnh cho thị gi&aacute;c m&aacute;y t&iacute;nh.</td> </tr> </tbody> </table> <h3 style="text-align: justify;">Tại Sao Lại Sử Dụng Pytorch?</h3> <p style="text-align: justify;">Đối với những người mới bắt đầu học Deep Learning v&agrave; Neural Network, l&yacute; do h&agrave;ng đầu để học PyTorch đ&oacute; l&agrave; n&oacute; l&agrave; một framework&nbsp;dễ học v&agrave; dễ sử dụng, đủ linh hoạt để sử dụng trong c&aacute;c ứng dụng kh&aacute;c nhau, hiệu quả để ch&uacute;ng ta c&oacute; thể xử l&yacute; c&aacute;c bộ dữ liệu thực tế lớn v&agrave; đủ ch&iacute;nh x&aacute;c để cung cấp kết quả ch&iacute;nh x&aacute;c ngay cả khi kh&ocirc;ng chắc chắn về dữ liệu đầu v&agrave;o.</p> <p style="text-align: justify;">Khi ch&uacute;ng ta x&acirc;y dựng mạng Neural với PyTorch, ch&uacute;ng ta đ&atilde; tiến rất gần đến việc lập tr&igrave;nh mạng Neural từ đầu. Trải nghiệm lập tr&igrave;nh trong PyTorch gần giống như thực tế.</p> <pre><code>PyTorch is as close as it gets to the real thing!</code></pre> <p style="text-align: justify;">Nh&igrave;n chung, PyTorch l&agrave; một c&ocirc;ng cụ tuyệt vời để n&acirc;ng cao hiểu biết của ch&uacute;ng ta về Deep Learning v&agrave; mạng Neural.</p> <h3 style="text-align: justify;">Pytorch D&agrave;nh Cho Nghi&ecirc;n Cứu Deep Learning</h3> <p style="text-align: justify;">Một l&yacute; do kh&aacute;c của&nbsp;PyTorch l&agrave;m cho n&oacute; phổ biến hơn đ&oacute; l&agrave; n&oacute; rất&nbsp;ph&ugrave; hợp cho việc nghi&ecirc;n cứu.&nbsp;L&yacute; do cho sự ph&ugrave; hợp nghi&ecirc;n cứu n&agrave;y li&ecirc;n quan đến việc xem x&eacute;t thiết kế kỹ thuật.&nbsp;Để tối ưu h&oacute;a mạng Neural, ch&uacute;ng ta cần t&iacute;nh to&aacute;n c&aacute;c dẫn xuất v&agrave; để thực hiện điều n&agrave;y một c&aacute;ch khoa học, c&aacute;c deep learning frameworks sử dụng c&aacute;i được gọi l&agrave; đồ thị t&iacute;nh to&aacute;n (&nbsp;<a href="http://colah.github.io/posts/2015-08-Backprop/">computational graphs</a>).</p> <pre><code>Đồ thị t&iacute;nh to&aacute;n được sử dụng để vẽ biểu đồ c&aacute;c hoạt động h&agrave;m xảy ra tr&ecirc;n c&aacute;c tensors b&ecirc;n trong mạng neural.</code></pre> <p style="text-align: justify;">C&aacute;c đồ thị n&agrave;y sau đ&oacute; được sử dụng để t&iacute;nh to&aacute;n c&aacute;c dẫn xuất cần thiết nhằm tối ưu h&oacute;a mạng neural.&nbsp;PyTorch sử dụng một đồ thị t&iacute;nh to&aacute;n được gọi l&agrave; đồ thị t&iacute;nh to&aacute;n động (dynamic computational).&nbsp;Điều n&agrave;y c&oacute; nghĩa l&agrave; biểu đồ sẽ được tạo nhanh ch&oacute;ng khi c&aacute;c hoạt động được khởi tạo. Việc&nbsp;n&agrave;y rất cần thiết trong c&aacute;c chủ đề nghi&ecirc;n cứu ti&ecirc;n tiến của deep learning đang đ&ograve;i hỏi rất nhiều từ đồ thị động.</p> <h3 style="text-align: justify;">Kết Luận</h3> <p style="text-align: justify;">B&agrave;i viết n&agrave;y chỉ đơn giản l&agrave; giới thiệu để bạn l&agrave;m quen được với pytorch, lược sử h&igrave;nh th&agrave;nh, l&yacute; do sử dụng pytorch... Trong b&agrave;i viết tiếp theo ch&uacute;ng ta h&atilde;y c&ugrave;ng nhau t&igrave;m hiểu c&aacute;ch c&agrave;i đặt pytorch. Hẹn gặp lại c&aacute;c bạn ở b&agrave;i sau.</p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>