Hướng dẫn c++ or python for machine learning - c ++ hoặc python cho học máy

Bạn tuyên bố rằng

C ++ về mặt kỹ thuật là một ngôn ngữ mạnh mẽ hơn Python.

Nhưng tuyên bố đó là sai (hoặc không có ý nghĩa nhiều). Hãy nhớ rằng một ngôn ngữ lập trình là một đặc điểm kỹ thuật (thường là một số tài liệu được viết bằng tiếng Anh). Ví dụ, N3337 là một bản thảo muộn của đặc tả C ++. Tôi không thích Python, nhưng nó có vẻ mạnh hơn C ++ (ngay cả khi việc triển khai C ++ thường nhanh hơn Python Versa.a programming language is a specification (often some document written in English). For example, n3337 is a late draft of the C++ specification. I don't like Python, but it does seems as powerful than C++ (even if C++ implementations are generally faster than Python ones): what a good Python programmer can code well in Python, another good C++ programmer can code well in C++ and vice versa.

Về mặt lý thuyết, cả C ++ và Python đều là ngôn ngữ lập trình hoàn chỉnh (về mục đích).

Và Python cũng biểu cảm như C ++. Tôi không thể đặt tên cho một tính năng ngôn ngữ lập trình mà Python có nhưng không phải C ++ (ngoại trừ các tính năng liên quan đến phản ánh; xem thêm câu trả lời này và nhận thức được dlopen - xem chương trình Manydl.c của tôi - của LLVM, của libgcjit, của libbacktrace và xem xét một số Cách tiếp cận lập trình meta với họ, à la Bismon hoặc như blog của J.Pitrat ủng hộ nó).

Có thể bạn nghĩ về một ngôn ngữ lập trình là phần mềm thực hiện nó. Sau đó, Python cũng biểu cảm như C ++ (và có vẻ dễ học hơn, nhưng đó là một ảo ảnh; xem http://norvig.com/21-days.html để biết thêm về ảo ảnh đó). Python và C ++ có một ngữ nghĩa khá giống nhau, ngay cả khi cú pháp của họ rất khác nhau. Hệ thống loại của họ rất khác nhau.

Thật đáng buồn, nhiều thư viện học máy lớn gần đây (như Tensorflow hoặc Gudhi, cả hai đều được mã hóa trong C ++) trong thực tế dễ sử dụng hơn trong Python so với C ++. Nhưng bạn có thể sử dụng TensorFlow hoặc Gudhi từ mã C ++ vì TensorFlow và Gudhi hầu hết được mã hóa trong C ++ và cả cung cấp và ghi lại API C ++ (không chỉ là Python).major machine learning libraries (such as TensorFlow or Gudhi, both mostly coded in C++) are in practice easier to use in Python than in C++. But you can use TensorFlow or Gudhi from C++ code since TensorFlow and Gudhi are mostly coded in C++ and both provide and document a C++ API (not just a Python one).

C ++ cho phép lập trình đa luồng, nhưng việc triển khai Python thông thường có GIL của nó, được mã hóa byte, do đó chậm hơn đáng kể so với C ++ (thường được biên dịch bằng cách tối ưu hóa các trình biên dịch như GCC hoặc Clang; tuy nhiên bạn có thể tìm thấy các phiên dịch C ++, ví dụ: CLING). Một số triển khai thử nghiệm của Python được biên dịch JIT và không có Gil. Nhưng đây không phải là trưởng thành: Tôi khuyên bạn nên đầu tư một triệu euro để tăng TRL của họ.

Cũng quan sát rằng C ++ khó học hơn nhiều so với Python. Ngay cả với hàng tá năm kinh nghiệm lập trình C ++, tôi không thể tuyên bố thực sự biết hầu hết C ++.

Đáng buồn thay, hầu hết các cuốn sách gần đây đều dạy kỹ thuật phần mềm AI (ví dụ: cái này hoặc một cuốn sách đó) sử dụng Python (không phải C ++) cho các ví dụ của họ. Tôi thực sự muốn nhiều cuốn sách AI gần đây sử dụng C ++!

BTW, tôi lập trình phần mềm nguồn mở (như phần này hoặc GCC tan chảy lỗi thời) bằng cách sử dụng các kỹ thuật AI, nhưng chúng không sử dụng Python. Cách tiếp cận của tôi đối với các ứng dụng AI là bắt đầu thiết kế một số DSL trong đó.

Một số cách tiếp cận AI liên quan đến siêu hình, ví dụ: Tạo một số (hoặc hầu hết, hoặc thậm chí tất cả) mã của một hệ thống tự nó. J.Pitrat (ông đã qua đời vào tháng 10 năm 2019) đã đi tiên phong trong phương pháp này. Xem blog của anh ấy, hệ thống CAIA của anh ấy, đọc những sinh vật nhân tạo của anh ấy, lương tâm của một cuốn sách máy bào (ISBN 978-1848211018) và Dự án REFPERSYS (có tham vọng là tạo ra nhiều nhất-và hy vọng tất cả-mã C ++ của nó).

Trên các hệ điều hành như Linux, trong thực tế, bạn có thể tạo mã C ++ (hoặc C) khi chạy và biên dịch nó (sử dụng GCC) thành plugin, sau đó Dlopen (3) tạo ra plugin và truy xuất các con trỏ chức năng bằng tên của chúng bằng DLSYM ( 3). Xem ví dụ ManyDl.c (trên một máy tính để bàn mạnh mẽ vào năm 2020, bạn sẽ có thể tạo và tải nửa triệu plugin, nếu bạn chạy ví dụ đó vài ngày). Với DLADDR (3) và Libbacktrace của Ian Taylor, bạn cũng có thể kiểm tra một số ngăn xếp cuộc gọi.

Các tập đoàn lớn của AFAIK như Google sử dụng C ++ trong nội bộ cho hầu hết các mã liên quan đến AI của họ. Cũng xem vào Milepost GCC hoặc dự án giải mã H2020 cho việc áp dụng các kỹ thuật học máy cho các trình biên dịch. Xem thêm Hipeac.

Tất nhiên, bạn có thể mã hóa phần mềm AI trong Haskell, nói chung là LISP (ví dụ: với SBCL) hoặc trong OCAML. Nhiều khung học máy có thể được gọi từ họ. Các thư viện khủng hoảng có thể sử dụng opencl.

Ngôn ngữ lập trình nào là tốt nhất khi học máy? Nếu bạn có một ý tưởng cho một dự án mới cho doanh nghiệp của bạn sẽ yêu cầu khả năng học máy, điều quan trọng là bạn phải lựa chọn đúng, vì sự thành công (hoặc thất bại) của ứng dụng của bạn sẽ xoay quanh nó. Để bắt đầu, bạn sẽ cần một ngôn ngữ với các thư viện học máy tốt. Youllll cũng cần hiệu suất thời gian chạy tốt, hỗ trợ công cụ tốt, một cộng đồng lớn gồm các lập trình viên và hệ sinh thái lành mạnh về các gói hỗ trợ. Có nhiều ngôn ngữ mã hóa để lựa chọn từ các hộp này, nhưng hôm nay chúng tôi sẽ thu hẹp trường xuống còn hai trong số các loại phổ biến nhất - Python so với C ++. Hãy cùng xem và xem cái nào tốt hơn cho việc học máy.

C ++ có mất đi sự nổi tiếng không?

GitHub tập hợp 10 ngôn ngữ lập trình phổ biến nhất được sử dụng để học máy. Python là ngôn ngữ phổ biến nhất trong số các kho lưu trữ máy học và là ngôn ngữ phổ biến thứ ba trên GitHub tổng thể.

Hướng dẫn c++ or python for machine learning - c ++ hoặc python cho học máy

Tại sao Python lại phổ biến hơn C ++? Chà, rất nhiều trong số đó là thực tế là Python cực kỳ dễ học, và cũng dễ sử dụng trong thực tế khi so sánh với C ++. Bạn không cần nhiều năm kinh nghiệm kỹ thuật phần mềm để bắt đầu với Python và nó cũng có một số lượng lớn các thư viện sẵn sàng sử dụng cho các mục đích học máy và phân tích dữ liệu. Ngoài ra, các học giả làm việc trong học máy đã thực hiện lịch sử các mô hình của họ trong Python chứ không phải C ++, có nghĩa là hầu hết các mô hình được xuất bản trong các bài báo đều có sẵn dưới dạng triển khai ở Python.extremely easy to learn, and is also easy to use in practice when compared to C++. You don’t need years of software engineering experience to get started with Python, and it also has a huge number of libraries that are ready to use for the purposes of machine learning and data analysis.
Also, academics working in machine learning have historically implemented their models in Python and not C++, meaning that most models published in papers are publicly available in the form of implementations in Python.

Notebook Jupyter cũng là công cụ giúp các lập trình viên sinh viên học cách sử dụng Python cho khoa học dữ liệu, học máy và nghiên cứu. Jupyter được thiết kế cho Julia, Python và R (do đó tên-mặc dù trước đây nó được gọi là Ipython) và là một ứng dụng web nguồn mở cho phép người dùng tạo và chia sẻ tài liệu có chứa mã trực tiếp, phương trình, trực quan hóa và văn bản giải thích. Về cơ bản, máy tính xách tay Jupyter là sách giáo khoa tương tác, đầy đủ các giải thích và ví dụ mà sinh viên có thể kiểm tra ngay từ trình duyệt của họ. have also been instrumental in helping student programmers learn to use Python for data science, machine learning, and research. Jupyter was designed for Julia, Python, and R (hence the name – though it was formerly known as IPython), and is an open-source web application that allows users to create and share documents that contain live code, equations, visualisations, and explanatory text. Essentially, Jupyter Notebooks are interactive textbooks, full of explanations and examples which students can test out right from their browsers.

Có rất nhiều dịch vụ bổ sung được cung cấp xung quanh máy tính xách tay Jupyter, chẳng hạn như Google Colab - Dịch vụ đám mây miễn phí của Google cho các nhà phát triển AI, bao gồm truy cập miễn phí vào GPU hiệu suất cao mà máy tính xách tay Jupyter có thể được chạy. Google Colab cũng liên kết trực tiếp với Google Drive, nghĩa là bộ dữ liệu và sổ ghi chép cũng có thể được lưu trữ ở đó. Với mọi thứ đều miễn phí, ở đó, thực sự không có gì khác ngoài đó với chi phí nhập cảnh thấp hơn, điều này chắc chắn đã giúp ích cho sự phổ biến của Python, như ngôn ngữ học máy được lựa chọn cho rất nhiều nhà phát triển.Google Colab – Google’s free cloud service for AI developers, which also includes free access to high performance GPUs on which Jupyter Notebooks can be run. Google Colab also ties in directly with Google Drive, meaning datasets and Notebooks can be stored there, too.
With everything being free, there’s really nothing else out there with a lower cost of entry, which has undoubtedly helped with Python’s popularity as the machine learning language of choice for so many developers.

Hướng dẫn c++ or python for machine learning - c ++ hoặc python cho học máy

C ++ nhanh hơn nhiều và hoạt động tốt hơn Python

Mặc dù sự nổi tiếng của nó, có một vài lĩnh vực mà C ++ vượt trội so với Python. Đối với một điều, C ++ có lợi thế là một ngôn ngữ được đánh máy tĩnh, vì vậy bạn đã giành được các lỗi loại xuất hiện trong thời gian chạy. Vương miện hiệu suất cũng được chuyển đến C ++, vì C ++ tạo ra mã thời gian chạy nhỏ gọn và nhanh hơn. Tuy nhiên, có một số cách để tối ưu hóa mã Python để nó chạy hiệu quả hơn. Ví dụ, có các tiện ích mở rộng tối ưu hóa cho python như cython, về cơ bản là python với gõ tĩnh - và vì cython được gõ tĩnh, bạn có thể dễ dàng biên dịch nó thành C/C ++ và chạy ở tốc độ C/C ++, do đó không có Sự khác biệt.For one thing, C++ has the advantage of being a statically typed language, so you won’t have type errors show up during runtime. The performance crown also goes to C++, as C++ creates more compact and faster runtime code. However, there are several ways to optimise Python code so it runs more efficiently. For example, there are optimising extensions for Python such as Cython, which is essentially Python with static typing – and because Cython is statically typed, you can easily compile it to C/C++ and run at C/C++ speeds, so there is practically no difference.

Thực tế là Python là một ngôn ngữ năng động (trái ngược với tĩnh) có một số lợi thế của chính nó, tuy nhiên - không chỉ bởi vì nó làm giảm độ phức tạp khi hợp tác và tối ưu hóa hiệu quả của lập trình viên, vì vậy bạn có thể thực hiện chức năng với ít mã hơn. Không giống như C ++, trong đó tất cả các trình biên dịch chính có xu hướng thực hiện tối ưu hóa cụ thể và có thể là cụ thể của nền tảng, mã Python có thể được chạy trên hầu hết mọi nền tảng mà không lãng phí thời gian vào các cấu hình cụ thể.
Unlike C++, where all major compilers tend to do specific optimisation and can be platform specific, Python code can be run on pretty much any platform without wasting time on specific configurations.

Một yếu tố khác cần xem xét là sự gia tăng của điện toán tăng tốc GPU. GPU cung cấp các khả năng cho sự song song, và đã dẫn đến việc tạo ra các thư viện như Cuda Python và Cudnn. Điều này về cơ bản có nghĩa là ngày càng nhiều điện toán thực tế cho khối lượng công việc học máy đang được giảm tải cho GPU - và kết quả là bất kỳ lợi thế hiệu suất nào mà C ++ có thể ngày càng không liên quan.CUDA Python and cuDNN. What this essentially means is that more and more of the actual computing for machine learning workloads is being offloaded to GPUs – and the result is that any performance advantage that C++ may have is becoming increasingly irrelevant.

Python là mã đơn giản và dễ đọc

Python nổi tiếng với mã ngắn gọn và dễ đọc của nó, kiếm được nhiều sự liên quan đến sự dễ sử dụng và đơn giản của nó-đặc biệt là trong số các nhà phát triển mới. Điều tương tự không thể nói đối với C ++, được coi là ngôn ngữ cấp thấp hơn, điều đó có nghĩa là dễ đọc hơn cho máy tính (do đó hiệu suất cao hơn của nó), mặc dù khó đọc hơn cho con người., earning it high regard for its ease-of-use and simplicity – particularly amongst new developers. The same cannot be said for C++, which is considered to be a lower-level language, which means that it is easier to read for the computer (hence its higher performance), though harder to read for humans.

Với sự phức tạp của các thuật toán học máy, nhà phát triển càng ít lo lắng về sự phức tạp của mã hóa, họ càng có thể tập trung vào những gì thực sự quan trọng - tìm giải pháp cho các vấn đề và đạt được mục tiêu của dự án. Tính đơn giản và khả năng đọc cũng giúp ích khi mã hóa hợp tác, hoặc khi các dự án học máy cần thay đổi giữa các nhóm phát triển. Theo nghĩa này, Python đi lên vấp ngã.finding solutions to problems and achieving the goals of the project.
Simplicity and readability also help when it comes to collaborative coding, or when machine learning projects need to change hands between development teams. In this sense, Python comes up trumps.

Cú pháp đơn giản của Python, cũng cho phép một ETL (trích xuất, biến đổi, tải) tự nhiên hơn và trực quan hơn và có nghĩa là nó nhanh hơn để phát triển khi so sánh với C ++, cho phép các nhà phát triển nhanh chóng kiểm tra các thuật toán học máy mà không phải thực hiện chúng.

Sự khác biệt giữa Python và C ++

Đối với chúng tôi, người chiến thắng rõ ràng giữa C ++ và Python cho học máy là Python. Có nhiều lý do mà nó rất phổ biến:
There are many reasons it’s so popular:

  • Cú pháp đơn giản và khả năng dễ đọc thúc đẩy kiểm tra nhanh các thuật toán học máy phức tạp;the rapid testing of complex machine learning algorithms;
  • Một cộng đồng thịnh vượng được củng cố bởi các công cụ hợp tác như Jupyter Notebooks và Google Colab;
  • Lựa chọn rộng rãi các thư viện dành riêng cho máy học để khởi động. to boot.

Tất cả đang được nói, các dự án cụ thể cần các công nghệ cụ thể. Vì vậy, nếu bạn đang lập kế hoạch cho một dự án mới với khả năng học máy và muốn biết liệu C ++, Python hay bất kỳ ngôn ngữ nào khác sẽ phù hợp nhất, hãy liên lạc với NetGuru và chúng tôi sẽ trò chuyện qua yêu cầu và tư vấn cho bạn về con đường tốt nhất về phía trước.get in touch with Netguru and we’ll chat through your specific requirements and advise you on the best path forward.

C hay Python có tốt hơn cho việc học máy không?

Đầu tiên, chúng ta hãy xem xét sự phổ biến tổng thể của các ngôn ngữ học máy. Python dẫn đầu gói, với 57% các nhà khoa học dữ liệu và các nhà phát triển học máy sử dụng nó và 33% ưu tiên nó để phát triển.Python leads the pack, with 57% of data scientists and machine learning developers using it and 33% prioritising it for development.

C có tốt cho việc học máy không?

C là ngôn ngữ thực sự nhanh và có thể tối ưu hóa dễ dàng hơn rất nhiều, điều này có thể dẫn đến các thuật toán nhanh hơn, vì vậy đây chắc chắn là một lựa chọn tuyệt vời để thực hiện các thuật toán học máy có thể mất nhiều quá trình xử lý hoặc bộ nhớ để thực hiện.it is certainly a great choice for implementing machine-learning algorithms that could take a lot of processing or memory to perform.

Tại sao Python được sử dụng để học máy hơn C?

Python rất đơn giản và dễ đọc có thể đọc được và khả năng đọc cũng giúp ích khi mã hóa hợp tác hoặc khi các dự án học máy cần thay đổi giữa các nhóm phát triển.Theo nghĩa này, Python đi lên vấp ngã. Simplicity and readability also help when it comes to collaborative coding, or when machine learning projects need to change hands between development teams. In this sense, Python comes up trumps.

C hay Python có hữu ích hơn không?

Dễ phát triển - Python có ít từ khóa hơn và cú pháp tiếng Anh miễn phí hơn trong khi C khó viết hơn.Do đó, nếu bạn muốn một quá trình phát triển dễ dàng, hãy cho Python.Hiệu suất - Python chậm hơn C vì phải mất thời gian CPU đáng kể để giải thích.Vì vậy, tốc độ C là một lựa chọn tốt hơn.if you want an easy development process go for Python. Performance – Python is slower than C as it takes significant CPU time for interpretation. So, speed-wise C is a better option.