>  기사  >  기술 주변기기  >  TensorFlow가 머신러닝 개발을 할 수 있는 이유는 무엇인가요?

TensorFlow가 머신러닝 개발을 할 수 있는 이유는 무엇인가요?

WBOY
WBOY앞으로
2023-04-08 21:21:041611검색

머신러닝은 복잡한 주제이지만, 머신러닝 프레임워크(예: Google의 TensorFlow)는 데이터 획득, 모델 교육, 예측 제공 및 향후 결과 개선 프로세스를 단순화하므로 머신러닝 구현이 이전보다 훨씬 덜 어렵습니다.

TensorFlow가 머신러닝 개발을 할 수 있는 이유는 무엇인가요?

Google Brain 팀이 만들고 2015년에 처음 공개된 TensorFlow는 수치 컴퓨팅 및 대규모 기계 학습을 위한 오픈 소스 라이브러리입니다. TensorFlow는 광범위한 머신러닝, 딥러닝 모델 및 알고리즘(신경망이라고도 함)을 번들로 묶어 일반적인 프로그래밍 비유를 통해 유용하게 만듭니다. 고성능 C++에서 실행하면서 Python 또는 JavaScript를 사용하여 애플리케이션을 구축하기 위한 편리한 프런트 엔드 API를 제공합니다.

TensorFlow는 PyTorch 및 Apache MXNet과 같은 프레임워크와 경쟁하여 필기 숫자 분류, 이미지 인식, 단어 임베딩, 순환 신경망, 기계 번역을 위한 시퀀스-시퀀스 모델, 자연어 처리 및 시뮬레이션 기반을 위한 심층 신경망을 훈련하고 실행합니다. PDE(편미분 방정식)에 관한 것입니다. 무엇보다도 TensorFlow는 교육에 동일한 모델을 사용하여 대규모 생산 예측을 지원합니다.

TensorFlow에는 자신의 프로젝트에 사용할 수 있는 사전 훈련된 모델로 구성된 광범위한 라이브러리도 있습니다. 자체 모델 학습을 위한 모범 사례의 예로 TensorFlow Model Park의 코드를 사용할 수도 있습니다.

TensorFlow 작동 방식

TensorFlow를 사용하면 개발자는 데이터 흐름 그래프(데이터가 그래프 또는 일련의 처리 노드를 통해 이동하는 방식을 설명하는 구조)를 만들 수 있습니다. 그래프의 각 노드는 수학적 연산을 나타내며 노드 사이의 각 연결 또는 가장자리는 다차원 데이터 배열 또는 텐서입니다.

TensorFlow 애플리케이션은 로컬 머신, 클라우드 클러스터, iOS 및 Android 기기, CPU 또는 GPU 등 가장 편리한 대상에서 실행될 수 있습니다. Google의 자체 클라우드를 사용하는 경우 Google의 맞춤 TensorFlow 처리 장치(TPU) 칩에서 TensorFlow를 실행하여 더욱 가속화할 수 있습니다. 그러나 TensorFlow로 생성된 결과 모델은 예측을 제공하는 데 사용되는 대부분의 장치에 배포될 수 있습니다.

TensorFlow 2.0은 사용자 피드백을 기반으로 프레임워크가 다양하게 개선되어 사용이 더 쉬워지고(예: 모델 훈련에 비교적 간단한 KerasAPI 사용) 성능이 향상되면서 2019년 10월에 출시되었습니다. 새로운 API 덕분에 분산 훈련을 더 쉽게 실행할 수 있으며 TensorFlow Lite 지원을 통해 더욱 다양한 플랫폼에 모델을 배포할 수 있습니다. 그러나 새로운 TensorFlow 2.0 기능을 최대한 활용하려면 이전 버전의 TensorFlow용으로 작성된 코드를 때로는 약간, 때로는 크게 다시 작성해야 합니다.

훈련된 모델을 사용하면 REST 또는 gRPC API를 사용하는 Docker 컨테이너를 통해 예측을 서비스로 제공할 수 있습니다. 고급 서비스 시나리오의 경우 Kubernetes를 사용할 수 있습니다

Python과 함께 TensorFlow 사용

TensorFlow는 프로그래머에게 Python 언어를 통해 이러한 모든 기능을 제공합니다. Python은 배우고 사용하기 쉬우며 높은 수준의 추상화를 결합하는 방법을 표현하는 편리한 방법을 제공합니다. TensorFlow는 Python 버전 3.7~3.10에서 지원되며, 이전 버전의 Python에서도 작동할 수 있지만 작동이 보장되지는 않습니다.

TensorFlow의 노드와 텐서는 Python 객체이고 TensorFlow 애플리케이션 자체는 Python 애플리케이션입니다. 그러나 실제 수학 연산은 Python에서 수행되지 않습니다. TensorFlow를 통해 제공되는 변환 라이브러리는 고성능 C++ 바이너리로 작성됩니다. Python은 단순히 다양한 부분 간의 흐름을 지시하고 이를 서로 연결하기 위한 높은 수준의 프로그래밍 추상화를 제공합니다.

TensorFlow의 고급 작업(노드와 레이어 생성 및 연결)은 Keras 라이브러리를 사용합니다. Keras API는 믿을 수 없을 정도로 간단합니다. 기본 3계층 모델은 10줄 미만의 코드로 정의할 수 있으며 동일한 훈련 코드에는 단 몇 줄의 코드만 필요합니다. 그러나 "장막을 걷어내고" 자신만의 훈련 루프를 작성하는 등 더욱 세밀한 작업을 수행하고 싶다면 그렇게 할 수 있습니다.

JavaScript와 함께 TensorFlow 사용

Python은 TensorFlow 및 기계 학습 작업에 가장 널리 사용되는 언어입니다. 그러나 JavaScript는 이제 TensorFlow의 일급 언어이기도 하며 JavaScript의 가장 큰 장점 중 하나는 웹 브라우저가 있는 곳이면 어디에서나 실행된다는 것입니다.

TensorFlow.js(JavaScript TensorFlow 라이브러리라고 함)는 WebGL API를 사용하여 시스템에서 사용 가능한 모든 GPU로 계산을 가속화합니다. WebAssembly 백엔드를 사용하여 실행할 수도 있습니다. 이는 CPU에서만 실행하는 경우 일반 JavaScript 백엔드보다 빠르지만 가능하면 GPU를 사용하는 것이 가장 좋습니다. 사전 구축된 모델을 사용하면 간단한 프로젝트를 시작하고 실행할 수 있으며 작업 방식에 대한 아이디어를 얻을 수 있습니다.

TensorFlow Lite

학습된 TensorFlow 모델은 iOS나 Android 시스템과 같은 엣지 컴퓨팅이나 모바일 장치에도 배포할 수 있습니다. TensorFlow Lite 도구 세트는 모델 크기와 정확성을 절충하여 TensorFlow 모델을 최적화하여 이러한 장치에서 잘 실행되도록 합니다. 더 작은 모델(예: 12MB 대 25MB, 심지어 100+MB)은 정확도가 떨어지지만 정확도 손실은 일반적으로 작으며 모델의 속도와 에너지 효율성으로 상쇄됩니다.

TensorFlow를 사용하는 이유

TensorFlow가 머신러닝 개발에 제공하는 가장 큰 이점은 추상화입니다. 개발자는 알고리즘 구현의 세부 사항을 다루거나 한 함수의 출력을 다른 함수의 입력에 연결하는 올바른 방법을 찾는 대신 전체 응용 프로그램 논리에 집중할 수 있습니다. TensorFlow는 배후의 세부사항을 처리합니다.

TensorFlow는 TensorFlow 애플리케이션을 디버그하고 이해해야 하는 개발자에게 더 많은 편의성을 제공합니다. 전체 그래프를 하나의 불투명한 개체로 작성하여 한 번에 평가하는 대신 각 그래프 작업을 개별적이고 투명하게 평가하고 수정할 수 있습니다. 소위 "열심히 실행 모드"는 이전 버전의 TensorFlow에서 옵션으로 제공되었으며 현재는 표준입니다.

TensorBoard Visualization Suite를 사용하면 대화형 웹 기반 대시보드를 통해 그래프가 어떻게 실행되는지 검사하고 분석할 수 있습니다. Tensorboard.dev 서비스(Google에서 호스팅)를 사용하면 TensorFlow로 작성된 기계 학습 실험을 호스팅하고 공유할 수 있습니다. 최대 100M의 스칼라, 1GB의 텐서 데이터, 1GB의 바이너리 객체 데이터를 무료로 저장할 수 있습니다. (Tensorboard.dev에 호스팅된 모든 데이터는 공개되므로 민감한 프로젝트에는 사용하지 마세요.)

TensorFlow는 또한 Google의 최고 수준 상업 조직의 지원을 통해 많은 이점을 얻습니다. Google은 프로젝트의 급속한 성장을 주도했으며 TensorFlow를 더 쉽게 배포하고 사용할 수 있도록 하는 많은 중요한 제품을 만들었습니다. 위에서 설명한 Google Cloud의 성능 가속화를 위한 TPU 칩은 하나의 예일 뿐입니다.

결정적 모델 훈련을 위해 TensorFlow 사용

TensorFlow 구현의 일부 세부사항으로 인해 일부 훈련 작업에 대해 완전히 결정적인 모델 훈련 결과를 얻기가 어렵습니다. 때때로 한 시스템에서 훈련된 모델은 완전히 동일한 데이터가 제공되었음에도 불구하고 다른 시스템에서 훈련된 모델과 약간 다를 수 있습니다. 이러한 차이가 발생하는 이유는 까다롭습니다. 한 가지 이유는 난수가 시드되는 방법과 위치이며, 다른 하나는 GPU를 사용할 때 일부 비결정적 동작과 관련이 있습니다. TensorFlow 2.0 브랜치에는 몇 줄의 코드만으로 전체 워크플로에 걸쳐 결정성을 활성화할 수 있는 옵션이 있습니다. 그러나 이 기능은 성능이 저하되므로 워크플로를 디버깅할 때만 사용해야 합니다.

TensorFlow는 PyTorch, CNTK 및 MXNet과 경쟁합니다.

TensorFlow는 다른 많은 기계 학습 프레임워크와 경쟁합니다. PyTorch, CNTK 및 MXNet은 동일한 요구 사항을 대부분 충족하는 세 가지 주요 프레임워크입니다. TensorFlow와 비교하여 어떤 부분이 눈에 띄고 부족한지 간단히 살펴보겠습니다.

  • PyTorch는 Python으로 구축되었으며 TensorFlow와 다른 많은 유사점을 가지고 있습니다. 즉, 내부에 하드웨어 가속 구성 요소가 있어 즉시 사용 가능한 디자인이 가능합니다. 고도의 대화형 개발 모델을 기반으로 하며 이미 많은 유용한 구성요소를 포함하고 있습니다. PyTorch는 짧은 시간 내에 실행해야 하는 프로젝트의 신속한 개발에 더 나은 선택인 경우가 많지만, TensorFlow는 대규모 프로젝트와 더 복잡한 워크플로에 더 적합합니다.
  • CNTK는 데이터 흐름을 설명하기 위해 그래프 구조를 사용한다는 점에서 TensorFlow와 유사한 Microsoft Cognitive Toolkit이지만 주로 딥 러닝 신경망을 만드는 데 중점을 둡니다. CNTK는 많은 신경망 작업을 더 빠르게 처리할 수 있으며 더 넓은 API(Python, C++, C#, Java)를 갖추고 있습니다. 그러나 현재는 TensorFlow만큼 배우거나 배포하기가 쉽지 않습니다. 또한 GNU GPL 3.0 라이센스에서만 사용할 수 있는 반면 TensorFlow는 보다 자유로운 Apache 라이센스에서만 사용할 수 있습니다. 그리고 CNTK는 덜 긍정적인 발전을 보이고 있습니다. 마지막 주요 버전은 2019년이었습니다.
  • Apache MXNet은 Amazon에서 AWS의 최고의 딥 러닝 프레임워크로 채택했으며 여러 GPU와 여러 머신에서 거의 선형적으로 확장할 수 있습니다. MXNet은 또한 Python, C++, Scala, R, JavaScript, Julia, Perl, Go 등 광범위한 언어 API를 지원하지만 기본 API는 TensorFlow만큼 사용하기 쉽지 않습니다. 또한 사용자와 개발자로 구성된 커뮤니티가 훨씬 작습니다.


원제:​​TensorFlow란 무엇인가요? 머신러닝 라이브러리 설명​

위 내용은 TensorFlow가 머신러닝 개발을 할 수 있는 이유는 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제