Theano vs TensorFlow: uma comparação rápida de frameworks



Este artigo sobre Theano vs TensorFlow fornecerá uma comparação curta e nítida entre os dois Frameworks e ajudará você a escolher aquele que se adapta a você.

A era de Aprendizado Profundo e está no auge. Vai criar 2,3 milhões Trabalhos em 2020. Com novas estruturas surgindo a cada mês, TensorFlow e Theano estão lá há algum tempo e também ganharam muita popularidade. Portanto, neste artigo Theano vs TensorFlow, discutirei os seguintes tópicos:

O que é Theano?

Theano pode ser definido como uma biblioteca para Computação Científica . Foi desenvolvido pela Université de Montréal e está disponível desde 2007.





theano-logo

Ele permite definir, otimizar e avaliar expressões matemáticas envolvendo matrizes multidimensionais de forma eficiente. Ele pode ser executado em CPU e GPU.



O que é TensorFlow?

TensorFlow é uma biblioteca de software de código aberto da Google Brain para programação de fluxo de dados em uma série de tarefas.

É uma biblioteca matemática simbólica usada para aplicativos de aprendizado de máquina como .



Theano vs TensorFlow

Compararemos Theano vs. TensorFlow com base nas seguintes métricas:

Popularidade:

Theano TensorFlow
Theano sendo um antigo Framework é não tão popular entre , Pesquisadores. Era uma vezTensorFlow é de longe o mais famoso Deep Learning Framework e é usado em muitas pesquisas.

Velocidade de execução:

Theano TensorFlow
Executa tarefas mais rápido do que TensorFlow. Especialmente as tarefas de GPU únicas rodam muito rápido no Theano.A velocidade de execução do TensorFlow é mais lenta em comparação com Theano, mas em tarefas multi-GPU ele assume a liderança.

Benefícios da tecnologia:

Theano TensorFlow
Suporta uma ampla gama de operações.

estrutura de dados da fila em java

Theano calcula o gradiente ao determinar o erro.

Você tem controle total sobre os Otimizadores, pois precisa codificá-los permanentemente.

O TensorFlow ainda precisa se equiparar ao Theano.

Esse não é o caso do TensorFlow

Dá acesso a muitos Otimizadores de qualidade prontos para uso. O que torna a codificação mais fácil

Compatibilidade:

Theano TensorFlow
Keras, uma incrível Biblioteca de Aprendizado Profundo, é compatível com Theano. Ele se integra bem.

Possui suporte nativo para Windows.

Ele também oferece suporte a Wrappers de alto nível, como lasanha.

Mas, no caso do TensorFlow, ainda não chegou lá. No entanto, na v2.0, esse não será o caso.

Atualmente, o TensorFlow não tem esse suporte.

Sem suporte para lasanha.

Suporte da comunidade:

c ++ classificar uma matriz

Theano TensorFlow
Theano tem maior suporte da comunidade, pois surgiu antes do TensorFlow.

Tem mais documentação do que o TensorFlow

O suporte da comunidade online do TensorFlow está aumentando rapidamente com sua popularidade.

A documentação é comparativamente menor.

Legibilidade do código:

Vamos comparar Theano com TensorFlow com base em seu código. Aqui estou pegando um script de exemplo básico, onde pegaremos alguns dados falsos e inicializaremos o melhor ajuste para esses dados para que possamos prever pontos de dados futuros.

Código Theano:

import theano import theano.tensor as T import numpy # Novamente, faça 100 pontos em numpy x_data = numpy.float32 (numpy.random.rand (2, 100)) y_data = numpy.dot ([0.100, 0.200], x_data) + 0.3 # Inicializar o modelo Theano X = T.matrix () Y = T.vector () b = theano.shared (numpy.random.uniform (-1, 1), nome = 'b') W = theano.shared ( numpy.random.uniform (-1,0, 1,0, (1, 2)), nome = 'W') y = W.dot (X) + b # Calcula os gradientes WRT o erro médio quadrático para cada parâmetro custo = T.mean (T.sqr (y - Y)) gradiente W = T.grad (custo = custo, wrt = W) gradiente B = T.grad (custo = custo, wrt = b) updates = [[W, W - gradiente W * 0,5], [b, b - gradienteB * 0,5]] trem = theano.function (entradas = [X, Y], saídas = custo, atualizações = atualizações, allow_input_downcast = True) para i em xrange (0, 201): treinar (dados_x, dados_y) imprimir W.get_value (), b.get_value ()

Código TensorFlow equivalente:

import tensorflow as tf import numpy as np # Cria 100 pontos de dados falsos em NumPy. x_data = np.float32 (np.random.rand (2, 100)) # Entrada aleatória y_data = np.dot ([0,100, 0,200], x_data) + 0,300 # Construa um modelo linear. 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 # Minimize os erros quadrados. loss = tf.reduce_mean (tf.square (y - y_data)) optimizer = tf.train.GradientDescentOptimizer (0.5) train = optimizer.minimize (loss) # Para inicializar as variáveis. init = tf.initialize_all_variables () # Lança o gráfico sess = tf.Session () sess.run (init) # Ajuste o plano. para a etapa em xrange (0, 201): sess.run (train) se a etapa% 20 == 0: etapa de impressão, sess.run (W), sess.run (b) # Aprende que o melhor ajuste é W: [[0,100 0,200]], b: [0,300]

Comprimento Sábio Ambos os códigos são quase Semelhante não há muita diferença. Dois gerados de forma idêntica arrays que descrevem a entrada e a saída de destino. Mas se dermos uma olhada na inicialização do modelo.

Inicialização do modelo:

# 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), nome = 'b') W = theano.shared (numpy.random .uniforme (-1,0, 1,0, (1, 2)), nome = 'W') y = W.dot (X) + b

Como você pode ver aqui, o TensorFlow não requer nenhum tratamento especial das variáveis ​​X e Y. Por outro lado, Theano requer um esforço extra para se certificar de que as variáveis ​​são Entradas Simbólicas para a função. As definições de be W são explicativas e também mais agradáveis.

O Aprendizado: Otimização

# Tensorflow loss = tf.reduce_mean (tf.square (y - y_data)) # (1) optimizer = tf.train.GradientDescentOptimizer (0.5) # (2) train = optimizer.minimize (loss) # (3) # Custo Theano = T.mean (T.sqr (y - Y)) # (1) gradienteW = T.grad (custo = custo, wrt = W) # (2) gradiente B = T.grad (custo = custo, wrt = b) # (2) atualizações = [[W, W - gradienteW * 0,5], [b, b - gradienteB * 0,5]] # (2) treinar = theano.function (entradas = [X, Y], saídas = custo, atualizações = atualizações, allow_input_downcast = True) # (3)

Para (1) o MSE é quase o mesmo para Theano vs TensorFlow.

Para (2) Definir o Otimizador é fácil e simples como parece no caso do TensorFlow, mas Theanno oferece uma grande quantidade de controle sobre os otimizadores, embora seja bastante demorado e aumente o esforço de verificação.

Para 3) Função de treinamento o código é quase semelhante

Corpo de treinamento:

certificado de pós-graduação vs mestrado
# TensorFlow init = tf.initialize_all_variables () sess = tf.Session () sess.run (init) para a etapa em xrange (0, 201): sess.run (train) # Theano para i em xrange (0, 201): treinar (dados_x, dados_y) imprimir W.get_value (), b.get_value ()

O código para treinamento é quase idêntico, mas encapsular a execução do gráfico no objeto da sessão é Conceptualmente mais limpo do que Theano.

Veredicto final: Theano vs TensorFlow

Em uma nota de conclusão, pode-se dizer que ambas as APIs têm um interface semelhante . Mas o TensorFlow é comparativamente Mais fácil yo use, pois fornece muitas ferramentas de monitoramento e depuração. Theano assume a liderança em Usabilidade e velocidade , mas o TensorFlow é mais adequado para implantação. Papelada ou Documentação para Theano é mais do que TensorFlow e TensorFlow sendo uma nova linguagem, as pessoas não têm muitos recursos, para começar. Bibliotecas profundas de código aberto, como Keras, Lasagne e Blocks foram construído em cima de Theano.

Espero que essa comparação tenha sido suficiente para você decidir qual estrutura escolher, verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. Este treinamento de certificação é organizado por profissionais da indústria de acordo com os requisitos e demandas da indústria. Você vai dominar conceitos como função SoftMax, Redes Neurais Autoencoder, Máquina Boltzmann Restrita (RBM) e trabalhar com bibliotecas como Keras & TFLearn.

Tem alguma questão para nós? Mencione isso na seção de comentários de “Theano vs TensorFlow” e entraremos em contato com você.