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.
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 vez | TensorFlow é 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ê.