Hai câu trả lời ngắn
Câu trả lời ngắn từ góc độ lý thuyết là ...
Biểu đồ tính toán động là một hệ thống có thể thay đổi được biểu diễn dưới dạng biểu đồ hướng dữ liệu giữa các hoạt động. Nó có thể được hình dung như các hình dạng chứa văn bản được kết nối bởi các mũi tên, theo đó các đỉnh (hình dạng) biểu thị các hoạt động trên dữ liệu chảy dọc theo các cạnh (mũi tên).
Lưu ý rằng biểu đồ như vậy xác định các phụ thuộc trong luồng dữ liệu nhưng không nhất thiết là thứ tự thời gian của ứng dụng hoạt động, có thể trở nên mơ hồ trong việc duy trì trạng thái theo các đỉnh hoặc chu kỳ trong biểu đồ mà không có cơ chế bổ sung để xác định ưu tiên tạm thời.
Câu trả lời ngắn từ góc độ phát triển ứng dụng là ...
Khung đồ thị tính toán động là một hệ thống các thư viện, giao diện và các thành phần cung cấp giao diện thời gian chạy linh hoạt, có lập trình, tạo điều kiện cho việc xây dựng và sửa đổi các hệ thống bằng cách kết nối một bộ hoạt động hữu hạn nhưng có thể mở rộng.
Khung PyTorch
PyTorch là sự tích hợp của khung Torch với cấu trúc dữ liệu và ngôn ngữ Python. Torch cạnh tranh với Theano, TensorFlow và các khung xây dựng hệ thống tính toán năng động khác.
--- Các phương pháp bổ sung để hiểu ---
Cấu trúc tính toán tùy ý của các thang đo rời rạc tùy ý
Một trong những thành phần có thể được sử dụng để xây dựng một hệ thống tính toán là một yếu tố được thiết kế để được kết nối với nhau để tạo ra các mạng thần kinh. Sự sẵn có của những điều này hỗ trợ việc xây dựng học tập sâu và truyền lại mạng lưới thần kinh. Một loạt các hệ thống khác liên quan đến việc lắp ráp các thành phần hoạt động với dữ liệu đa chiều có khả năng trong các cấu trúc tính toán được xác định tùy ý cũng có thể được xây dựng.
Dữ liệu có thể là các giá trị vô hướng, chẳng hạn như số dấu phẩy động, số nguyên hoặc chuỗi hoặc tập hợp trực giao của các giá trị này, chẳng hạn như vectơ, ma trận, hình khối hoặc siêu khối. Các hoạt động về khái quát hóa các dạng dữ liệu này là các thang đo rời rạc và các cấu trúc được tạo ra từ việc lắp ráp các hoạt động tenxơ vào các hệ thống làm việc là các luồng dữ liệu.
Điểm tham chiếu để hiểu khái niệm tính toán động
Đồ thị tính toán động không phải là một khái niệm đặc biệt mới, mặc dù thuật ngữ này tương đối mới. Sự quan tâm đến DCG giữa các nhà khoa học máy tính không phải là mới như thuật ngữ Nhà khoa học dữ liệu. Tuy nhiên, câu hỏi nêu chính xác rằng có rất ít tài nguyên được viết tốt (trừ các ví dụ mã) từ đó người ta có thể tìm hiểu khái niệm tổng thể xung quanh sự xuất hiện và sử dụng của chúng.
Một điểm tham chiếu có thể bắt đầu để hiểu DCG là mẫu thiết kế Command, một trong nhiều mẫu thiết kế được phổ biến bởi những người đề xuất thiết kế hướng đối tượng. Mẫu thiết kế lệnh coi các hoạt động như các đơn vị tính toán các chi tiết được ẩn khỏi các đối tượng lệnh kích hoạt chúng. Mẫu thiết kế lệnh thường được sử dụng cùng với mẫu thiết kế Phiên dịch.
Trong trường hợp của DCG, các mẫu thiết kế hỗn hợp và Mặt tiền cũng được tham gia để tạo điều kiện thuận lợi cho các hoạt động tenxơ rời rạc cắm và chạy có thể được lắp ráp với nhau trong các mẫu để tạo thành các hệ thống.
Sự kết hợp đặc biệt này của các mẫu thiết kế để tạo thành các hệ thống thực sự là một sự trừu tượng hóa phần mềm gần giống với ý tưởng cấp tiến dẫn đến sự xuất hiện của kiến trúc Von Neumann, trung tâm của hầu hết các máy tính ngày nay. Đóng góp của Von Neumann cho sự xuất hiện của máy tính là ý tưởng cho phép các thuật toán tùy ý chứa logic Boolean, số học và phân nhánh được biểu diễn và lưu trữ dưới dạng dữ liệu - một chương trình.
Một tiền thân khác của DCG là các công cụ biểu thức. Các công cụ biểu thức có thể đơn giản như các công cụ số học và phức tạp như các ứng dụng như Mathicala. Công cụ quy tắc hơi giống với DCG ngoại trừ công cụ quy tắc là quy tắc khai báo và quy tắc meta cho công cụ quy tắc hoạt động trên các khai báo đó.
Chương trình Thao tác Chương trình
Những gì chúng có điểm chung với DCG là luồng dữ liệu và hoạt động được áp dụng có thể được xác định khi chạy. Cũng như DCG, một số thư viện và ứng dụng phần mềm này có API hoặc các cơ chế khác để cho phép các hoạt động được áp dụng cho các chi tiết chức năng. Nó thực chất là ý tưởng của một chương trình cho phép thao tác của một chương trình khác.
Một điểm tham chiếu khác để hiểu nguyên tắc này ở cấp độ nguyên thủy là câu lệnh chuyển đổi trường hợp có sẵn trong một số ngôn ngữ máy tính. Đó là một cấu trúc mã nguồn, theo đó, lập trình viên về cơ bản thể hiện, "Chúng tôi không chắc chắn những gì phải được thực hiện, nhưng giá trị của biến này sẽ cho mô hình thực thi thời gian thực phải làm gì từ một tập hợp các khả năng."
Tuyên bố trường hợp chuyển đổi là một sự trừu tượng mở rộng ý tưởng trì hoãn quyết định theo hướng tính toán cho đến thời gian chạy. Đây là phiên bản phần mềm của những gì được thực hiện bên trong bộ điều khiển của CPU hiện đại và là phần mở rộng của khái niệm trì hoãn một số chi tiết thuật toán. Một bảng hàm functor (con trỏ hàm) trong C hoặc đa hình trong C ++, Java hoặc Python là các ví dụ nguyên thủy khác.
Tính toán động đưa sự trừu tượng hơn nữa. Họ trì hoãn hầu hết nếu không phải tất cả các đặc điểm kỹ thuật tính toán và các mối quan hệ giữa chúng để chạy thời gian. Tổng quát hóa toàn diện này mở rộng khả năng sửa đổi chức năng trong thời gian chạy.
Biểu diễn đồ thị có tính toán
Đó là mô hình tính toán động. Bây giờ cho phần đồ thị.
Khi một người quyết định trì hoãn lựa chọn các hoạt động được tạo thành trước cho đến khi chạy, một cấu trúc được yêu cầu để giữ các hoạt động, mối quan hệ phụ thuộc của chúng và có lẽ là các tham số ánh xạ. Một đại diện như vậy không chỉ là một cây cú pháp (chẳng hạn như một cây đại diện cho hệ thống phân cấp của mã nguồn). Không giống như một chương trình hợp ngữ hoặc mã máy, nó phải dễ dàng và tùy ý thay đổi. Nó phải chứa nhiều thông tin hơn biểu đồ luồng dữ liệu và nhiều hơn bản đồ bộ nhớ. Cấu trúc dữ liệu đó phải xác định cấu trúc tính toán trông như thế nào?
May mắn thay, bất kỳ thuật toán tùy ý, hữu hạn, giới hạn có thể được biểu diễn dưới dạng biểu đồ hướng phụ thuộc giữa các hoạt động được chỉ định. Trong biểu đồ như vậy, các đỉnh (thường được biểu thị dưới dạng các nút có hình dạng khác nhau khi được hiển thị) thể hiện các hoạt động được thực hiện trên dữ liệu và các cạnh (thường được biểu thị dưới dạng mũi tên khi được hiển thị) là các biểu diễn kỹ thuật số của thông tin bắt nguồn từ một số thao tác (hoặc đầu vào hệ thống) và dựa vào đó các hoạt động khác (hoặc đầu ra hệ thống) phụ thuộc.
Hãy nhớ rằng đồ thị có hướng không phải là một thuật toán (trong đó một chuỗi hoạt động chính xác được chỉ định) cũng không phải là một khai báo (trong dữ liệu đó có thể được lưu trữ rõ ràng và các vòng lặp, các nhánh, hàm và mô-đun có thể được xác định và lồng vào nhau).
Hầu hết các khung và thư viện đồ họa tính toán động này cho phép các thành phần thực hiện tính toán trên đầu vào thành phần hỗ trợ học máy. Các đỉnh trong đồ thị có hướng có thể là mô phỏng của các nơ-ron để xây dựng mạng lưới thần kinh hoặc các thành phần hỗ trợ tính toán vi phân. Các khung này trình bày các khả năng của các cấu trúc có thể được sử dụng cho việc học sâu theo nghĩa tổng quát hơn.
Trong bối cảnh lịch sử máy tính
Một lần nữa, không có gì được đề cập cho đến nay là mới đối với khoa học máy tính. LISP cho phép các sơ đồ tính toán được sửa đổi bằng các thuật toán khác. Và kích thước và số lượng đầu vào tổng quát được tích hợp vào một số giao diện và giao thức plug-and-play lâu đời. Ý tưởng về một khuôn khổ cho việc học bắt đầu từ cùng thời kỳ giữa thế kỷ XX.
Điểm mới và phổ biến là sự kết hợp đặc biệt của các tính năng tích hợp và tập hợp thuật ngữ liên quan, tổng hợp các thuật ngữ hiện có cho từng tính năng, dẫn đến cơ sở hiểu biết rộng hơn bởi những người đã nghiên cứu và làm việc trong ngành công nghiệp phần mềm .
- Hương vị hiện đại (hợp thời) của giao diện API
- Hướng đối tượng
- Hỗ trợ tenor rời rạc
- Biểu đồ trừu tượng có hướng
- Khả năng tương tác với các ngôn ngữ và gói phổ biến hỗ trợ dữ liệu lớn, khai thác dữ liệu, học máy và phân tích thống kê
- Hỗ trợ xây dựng mạng lưới thần kinh tùy ý và có hệ thống
- Khả năng thích ứng cấu trúc mạng thần kinh động (tạo điều kiện cho thử nghiệm về độ dẻo thần kinh)
Nhiều trong số các khung này hỗ trợ khả năng thích ứng với việc thay đổi kích thước đầu vào (số lượng kích thước và phạm vi của từng kích thước).
Tương tự với cây biểu tượng trừu tượng trong trình biên dịch
Một biểu đồ phụ thuộc của đầu vào và đầu ra của các hoạt động cũng xuất hiện trong các cây ký hiệu trừu tượng (AST), mà một số trình biên dịch tiến bộ hơn xây dựng trong quá trình giải thích cấu trúc mã nguồn. AST sau đó được sử dụng để tạo các lệnh biên dịch chương trình biên dịch hoặc lệnh máy trong quá trình liên kết với các thư viện và tạo thành một tệp thực thi. AST là một biểu đồ có hướng đại diện cho cấu trúc dữ liệu, các hoạt động được thực hiện và luồng điều khiển được chỉ định bởi mã nguồn.
Luồng dữ liệu chỉ đơn giản là tập hợp các phụ thuộc giữa các hoạt động, vốn phải có trong AST để AST được sử dụng để tạo các lệnh thực thi trong trình biên dịch mã hoặc mã máy theo chính xác thuật toán được chỉ định trong mã nguồn.
Các khung đồ thị tính toán động, không giống như các câu lệnh chuyển đổi hoặc mô hình AST trong trình biên dịch, có thể được thao tác trong thời gian thực, được tối ưu hóa, điều chỉnh (như trong trường hợp lưới nhân tạo bằng nhựa), đảo ngược, biến đổi bằng tenxơ, decimated, sửa đổi để thêm hoặc xóa entropy, bị đột biến theo một bộ quy tắc, hoặc được dịch thành các hình thức phái sinh. Chúng có thể được lưu trữ dưới dạng tệp hoặc luồng và sau đó lấy từ chúng.
Đây là một khái niệm tầm thường cho các lập trình viên LISP hoặc những người hiểu bản chất của khuyến nghị của John von Neumann để lưu trữ các thông số kỹ thuật vận hành dưới dạng dữ liệu. Theo nghĩa sau này, một chương trình là một luồng dữ liệu để hướng dẫn, thông qua trình biên dịch và hệ điều hành, một hệ thống tính toán động được triển khai trong mạch kỹ thuật số VLSI.
Đạt được kích thước và số lượng thích nghi
Trong câu hỏi là nhận xét mà người ta không nói, "Cần phải có tập dữ liệu - rằng tất cả các trường hợp trong đó có cùng số lượng đầu vào cố định." Tuyên bố đó không thúc đẩy sự hiểu biết chính xác. Có nhiều cách rõ ràng hơn để nói điều gì là đúng về khả năng thích ứng đầu vào.
Giao diện giữa DCG và các thành phần khác của một hệ thống tổng thể phải được xác định, nhưng các giao diện này có thể có kích thước động hoặc số được tích hợp trong chúng. Đó là một vấn đề trừu tượng.
Ví dụ, một loại đối tượng tenor rời rạc trình bày một giao diện phần mềm cụ thể, tuy nhiên một tenxơ là một khái niệm toán học động xung quanh mà một giao diện chung có thể được sử dụng. Một tenxơ rời rạc có thể là vô hướng, vectơ, ma trận, khối lập phương hoặc siêu khối và phạm vi của các biến phụ thuộc cho mỗi thứ nguyên có thể thay đổi.
Có thể là số lượng các nút trong một lớp của hệ thống được xác định trong Đồ thị tính toán động có thể là hàm của số lượng đầu vào của một loại cụ thể và đó cũng có thể là một tính toán được hoãn lại theo thời gian.
Khung có thể được lập trình để chọn cấu trúc lớp (một phần mở rộng của mô hình trường hợp chuyển đổi một lần nữa) hoặc tính toán các tham số xác định kích thước cấu trúc và độ sâu hoặc kích hoạt. Tuy nhiên, các tính năng tinh vi này không phải là những gì đủ điều kiện của khung làm khung Đồ thị tính toán động.
Điều gì đủ điều kiện một Khung để hỗ trợ đồ thị tính toán động?
Để đủ điều kiện làm khung đồ thị tính toán động, khung này chỉ đơn thuần hỗ trợ cho việc xác định thuật toán để chạy thời gian, do đó mở ra một loạt các hoạt động trên các phụ thuộc tính toán và luồng dữ liệu trong thời gian chạy. Khái niệm cơ bản của các hoạt động được hoãn lại phải bao gồm đặc tả, thao tác, thực thi và lưu trữ các biểu đồ được định hướng đại diện cho các hệ thống hoạt động.
Nếu đặc tả của thuật toán KHÔNG được hoãn lại cho đến khi chạy mà được biên dịch thành tệp thực thi được thiết kế cho một hệ điều hành cụ thể chỉ với tính linh hoạt truyền thống được cung cấp bởi các ngôn ngữ cấp thấp như if-then-other, case-switch, đa hình, mảng của functor và các chuỗi có độ dài thay đổi, nó được coi là một thuật toán tĩnh.
Nếu các hoạt động, sự phụ thuộc giữa chúng, luồng dữ liệu, chiều của dữ liệu trong luồng và khả năng thích ứng của hệ thống với số lượng và chiều của đầu vào đều biến đổi theo thời gian để tạo ra một hệ thống thích ứng cao, sau đó thuật toán là động theo những cách này.
Một lần nữa, các chương trình LISP hoạt động trên các chương trình LISP, công cụ quy tắc có khả năng quy tắc meta, công cụ biểu thức, thư viện đối tượng tenor rời rạc và thậm chí các mẫu thiết kế lệnh tương đối đơn giản đều có động, theo một số đặc điểm để chạy thời gian. DCG linh hoạt và toàn diện trong khả năng của mình để hỗ trợ các cấu trúc tính toán tùy ý theo cách tạo ra một môi trường phong phú để thử nghiệm học tập sâu và triển khai hệ thống.
Khi nào nên sử dụng đồ thị tính toán động
Những ưu và nhược điểm của DCG là hoàn toàn cụ thể. Nếu bạn điều tra các khái niệm lập trình động khác nhau ở trên và các khái niệm khác có thể được liên kết chặt chẽ với chúng trong tài liệu liên quan, nó sẽ trở nên rõ ràng cho dù bạn có cần Đồ thị tính toán động hay không.
Nói chung, nếu bạn cần biểu diễn một mô hình tính toán tùy ý và thay đổi để tạo điều kiện thuận lợi cho việc triển khai hệ thống học tập sâu, hệ thống thao tác toán học, hệ thống thích ứng hoặc phần mềm linh hoạt và phức tạp khác xây dựng bản đồ cho mô hình DCG, thì đó là một bằng chứng về khái niệm sử dụng khung Đồ thị tính toán động là bước đầu tiên tốt để xác định kiến trúc phần mềm của bạn cho giải pháp của vấn đề.
Không phải tất cả các phần mềm học tập đều sử dụng DCG, nhưng chúng thường là một lựa chọn tốt, khi thao tác có hệ thống và có thể liên tục của một cấu trúc tính toán tùy ý là một yêu cầu về thời gian chạy.