Theano vs TensorFlow : 프레임 워크의 빠른 비교



Theano와 TensorFlow에 대한이 기사는 두 프레임 워크 간의 짧고 명확한 비교를 제공하고 자신에게 적합한 프레임 워크를 선택하는 데 도움이됩니다.

시대 딥 러닝 과 정점에 있습니다. 그것은 만들 것입니다 230 만 2020 년까지 채용 정보. 매달 새로운 프레임 워크가 출시됨에 따라 TensorFlow와 Theano는 한동안 거기에 있었고 상당한 인기를 얻었습니다. 따라서이 Theano vs TensorFlow 기사에서는 다음 주제에 대해 논의 할 것입니다.

Theano는 무엇입니까?

Theano는 다음을위한 라이브러리로 정의 할 수 있습니다. 과학 컴퓨팅 . Université de Montréal에서 개발했으며 2007 년부터 출시되었습니다.





theano-logo

이를 통해 다차원 배열과 관련된 수학적 표현을 효율적으로 정의, 최적화 및 평가할 수 있습니다. CPU와 GPU 모두에서 실행할 수 있습니다.



TensorFlow 란 무엇입니까?

TensorFlow 다양한 작업에 대한 데이터 흐름 프로그래밍을위한 Google Brain의 오픈 소스 소프트웨어 라이브러리입니다.

자바에서 인터프리터는 무엇입니까

다음과 같은 기계 학습 응용 프로그램에 사용되는 기호 수학 라이브러리입니다. .



Theano 대 TensorFlow

다음 메트릭을 기반으로 Theano와 TensorFlow를 비교합니다.

인기:

테 아노 TensorFlow
Theano는 오래된 프레임 워크 인 그다지 인기가 없다 의 사이에 , 연구원. 옛날에TensorFlow는 가장 유명한 Deep Learning Framework는 많은 연구에서 사용됩니다.

실행 속도 :

테 아노 TensorFlow
TensorFlow보다 빠르게 작업을 수행합니다. 특히 단일 GPU 작업은 Theano에서 매우 빠르게 실행됩니다.TensorFlow의 실행 속도는 Theano에 비해 느리지 만 다중 GPU 작업에서는 선두를 차지합니다.

기술 이점 :

테 아노 TensorFlow
광범위한 작업을 지원합니다.

Theano는 다음을 결정할 때 기울기를 계산합니다. 오류.

최적화 프로그램을 하드 코딩해야하므로 완전히 제어 할 수 있습니다.

TensorFlow는 여전히 Theano와 동등해야합니다.

TensorFlow는 그렇지 않습니다.

그것은 즉시 많은 좋은 최적화 프로그램에 대한 액세스를 제공합니다. 코딩이 더 쉬워집니다

적합성:

테 아노 TensorFlow
놀라운 딥 러닝 라이브러리 인 Keras는 Theano와 호환됩니다. 잘 통합됩니다.

기본 Windows 지원이 있습니다.

또한 Lasagne와 같은 High-Level Wrappers를 지원합니다.

하지만 TensorFlow의 경우 아직 거기에 도달하지 않았습니다. 그러나 v2.0에서는 그렇지 않습니다.

double을 int java로 변환하는 방법

현재 TensorFlow에는이 지원이 없습니다.

Lasagne를 지원하지 않습니다.

커뮤니티 지원 :

테 아노 TensorFlow
Theano는 TensorFlow 이전부터 더 큰 커뮤니티 지원을 제공합니다.

TensorFlow보다 더 많은 문서가 있습니다.

TensorFlow의 온라인 커뮤니티 지원은 인기와 함께 빠르게 증가하고 있습니다.

문서는 비교적 적습니다.

코드 가독성 :

코드를 기반으로 Theano와 TensorFlow를 비교해 보겠습니다. 여기에서는 가짜 데이터를 가져와 미래의 데이터 포인트를 예측할 수 있도록 해당 데이터에 가장 적합한 데이터를 초기화하는 기본 예제 스크립트를 사용합니다.

Theano 코드 :

import theano import theano.tensor as T import numpy # 다시, numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Theano 모델 초기화 X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared ( numpy.random.uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b # 기울기 계산 WRT 각 매개 변수에 대한 평균 제곱 오차 비용 = T.mean (T.sqr (y-Y)) gradientW = T.grad (cost = cost, wrt = W) gradientB = T.grad (cost = cost, wrt = b) 업데이트 = [[W, W-gradientW * 0.5], [b, b-gradientB * 0.5]] train = theano.function (inputs = [X, Y], outputs = cost, updates = updates, allow_input_downcast = True) for i in xrange (0, 201) : train (x_data, y_data) print W.get_value (), b.get_value ()

동등한 TensorFlow 코드 :

import tensorflow as tf import numpy as np # NumPy에서 100 개의 가짜 데이터 포인트를 만듭니다. x_data = np.float32 (np.random.rand (2, 100)) # 임의 입력 y_data = np.dot ([0.100, 0.200], x_data) + 0.300 # 선형 모델을 구성합니다. b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # 제곱 오차를 최소화합니다. loss = tf.reduce_mean (tf.square (y-y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # 변수 초기화 용. init = tf.initialize_all_variables () # 그래프 시작 sess = tf.Session () sess.run (init) # 평면을 맞 춥니 다. for step in xrange (0, 201) : sess.run (train) if step % 20 == 0 : print step, sess.run (W), sess.run (b) # W가 가장 적합하다는 것을 배웁니다 : [[0.100 0.200]], b : [0.300]

길이 와이즈 두 코드 모두 거의 비슷한 큰 차이가 없습니다. 동일하게 생성 된 두 개 입력 및 대상 출력을 설명하는 배열. 하지만 모델 초기화를 살펴보면.

모델 초기화 :

# TensorFlow b = tf.Variable (tf.zeros ([1])) W = tf.Variable (tf.random_uniform ([1, 2], -1.0, 1.0)) y = tf.matmul (W, x_data) + b # Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), name = 'b') W = theano.shared (numpy.random .uniform (-1.0, 1.0, (1, 2)), name = 'W') y = W.dot (X) + b

여기서 볼 수 있듯이 TensorFlow는 X 및 Y 변수에 대한 특별한 처리가 필요하지 않습니다. 반면에 Theano는 변수가 다음과 같은지 확인하기 위해 추가 노력이 필요합니다. 기호 입력 기능에. b와 W의 정의는 설명적이고 또한 더 좋습니다.

학습 : 최적화

# Tensorflow loss = tf.reduce_mean (tf.square (y-y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Theano 비용 = T.mean (T.sqr (y-Y)) # (1) gradientW = T.grad (cost = cost, wrt = W) # (2) gradientB = T.grad (cost = cost, wrt = b) # (2) 업데이트 = [[W, W-gradientW * 0.5], [b, b-gradientB * 0.5]] # (2) train = theano.function (inputs = [X, Y], 출력 = 비용, 업데이트 = updates, allow_input_downcast = True) # (3)

(1)을 위해 MSE Theano와 TensorFlow의 경우 거의 동일합니다.

(2) 정의 옵티 마이저 TensorFlow의 경우처럼 쉽고 간단하지만 Theanno는 상당히 길고 검증 노력을 증가 시키는데도 불구하고 최적화 프로그램에 대한 많은 제어를 제공합니다.

용 (3) 훈련 기능 코드는 거의 비슷합니다

훈련 기관 :

# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) for step in xrange (0, 201) : sess.run (train) # Theano for i in xrange (0, 201) : train (x_data, y_data) print W.get_value (), b.get_value ()

훈련 용 코드는 거의 동일하지만 세션 객체에서 그래프 실행 캡슐화는 다음과 같습니다. 개념적으로 클리너 Theano보다.

최종 평결 : Theano 대 TensorFlow

결론적으로, 두 API 모두 유사한 인터페이스 . 하지만 TensorFlow는 비교적 더 쉬움 많은 모니터링 및 디버깅 도구를 제공하므로 사용하십시오. Theano가 선두를 차지합니다. 유용성과 속도 이지만 TensorFlow는 배포에 더 적합합니다. 서류 또는 선적 서류 비치 Theano는 TensorFlow 이상이며 TensorFlow는 새로운 언어 인 사람들에게는 처음부터 많은 리소스가 없습니다. Keras, Lasagne 및 Blocks와 같은 오픈 소스 딥 라이브러리는 위에 구축 테 아노.

이 비교가 어떤 프레임 워크를 선택할지 결정하기에 충분했으면합니다. 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. 이 인증 교육은 업계 요구 사항 및 요구 사항에 따라 업계 전문가가 선별합니다. SoftMax 기능, Autoencoder 신경망, RBM (Restricted Boltzmann Machine)과 같은 개념을 마스터하고 Keras 및 TFLearn과 같은 라이브러리를 사용합니다.

질문이 있으십니까? 'Theano vs TensorFlow'의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.