TensorFlow™ no Databricks
Variáveis
O TensorFlow é uma maneira de representar a computação sem realmente executá-la até que seja solicitada. Nesse sentido, é uma forma de computação preguiçosa, e permite grandes melhorias na execução do código:- Computação mais rápida de variáveis complexas
- Computação distribuída em vários sistemas, incluindo GPUs.
- Redundância reduzida em alguns cálculos
Vejamos como isso funciona na prática. Primeiro, um script python muito básico:
Este script basicamente diz "crie uma variável x com o valor 35, defina o valor de uma nova variável y a essa valor mais 5, que é atualmente 40, e imprima-a". O valor 40 será impresso ao executar este programa. Se você não estiver familiarizado com o python, crie um novo arquivo de texto chamado basic_script.py
e copie esse código. Salve-o em seu computador e execute-o com:
python basic_script.py
Observe que o caminho (ou seja, basic_script.py
) deve fazer referência ao arquivo, portanto, se ele estiver na pasta Code
, você usará:
python Code/basic_script.py
Além disso, confirme se o ambiente virtual Anaconda está ativado. No Linux, isso fará com que seu prompt fique mais ou menos assim:
(tensorenv)username@computername:~$
Se estiver funcionando, vamos converter para um equivalente do TensorFlow.
Depois de executar isso, você terá um resultado bem esquisito, algo como <tensorflow.python.ops.variables.Variable object at 0x7f074bfd9ef0>
. Claramente, não é o valor 40.
A razão é que nosso programa realmente faz algo bem diferente do anterior. O código aqui faz o seguinte:
- Importe o módulo do tensorflow e chame-o de
tf
- Crie um valor constante chamado x e atribua a ele o valor numérico 35
- Crie uma variável chamada y e defina-a como a equação x + 5
- Imprima o objeto de equação para y
A diferença sutil é que y não recebe “o valor atual de x + 5” como em nosso programa anterior. Em vez disso, é efetivamente uma equação que significa “quando essa variável é calculada, pegue o valor de x (como está então) e adicione 5 a ele”. O cálculo do valor de y nunca é realizado de fato no programa acima.
Vamos corrigir isso:
Removemos a declaração print(y)
e, em vez dela, temos um código que cria uma sessão e, na verdade, calcula o valor de y
. Isso é como um boilerplate, mas funciona assim:
- Importe o módulo do tensorflow e chame-o de
tf
- Crie um valor constante chamado x e atribua a ele o valor numérico 35
- Crie uma variável chamada y e defina-a como a equação x + 5
- Inicialize as variáveis com
tf.global_variables_initializer()
(entraremos em mais detalhes sobre isso) - Crie uma sessão para calcular os valores
- Execute o modelo criado em 4
- Execute apenas a variável y e imprima seu valor atual
A etapa 4 acima é onde a mágica acontece. Nessa etapa, é criado um gráfico das dependências entre as variáveis. Nesse caso, a variável y depende da variável x, e esse valor é transformado pela adição de 5. Lembre-se de que esse valor não é calculado até a etapa 7, pois, até então, somente as equações e relações são calculadas.
1) As constantes também podem ser matrizes. Preveja o que esse código fará e execute-o para confirmar:
2) Gere uma matriz NumPy de 10.000 números aleatórios (chamada x
) e crie uma variável para armazenar a equação
Você pode gerar a matriz NumPy usando este código:
Essa variável de dados
pode ser usada no lugar da lista da pergunta 1 acima. Como regra geral, NumPy deve ser usado para listas/matrizes de números maiores, pois é significativamente mais eficiente na memória e mais rápido de calcular do que as listas. Ele também fornece um número significativo de funções (como calcular a média) que geralmente não estão disponíveis para listas.
3) Você também pode atualizar variáveis em loops, que usaremos mais tarde para machine learning. Confira este código e preveja o que ele fará (em seguida, execute-o para verificar):
4) Usando o código de (2) e (3) acima, crie um programa que calcule a média "móvel" da seguinte linha de código: np.random.randint(1000)
. Em outras palavras, continue fazendo um loop e, em cada loop, chame np.random.randint
(1000) uma vez nesse loop e armazene a média atual em uma variável que continua atualizando cada loop.
5) Use o TensorBoard para ver o gráfico de alguns desses exemplos. Para executar o TensorBoard, use o comando: tensorboard --logdir=path/to/log-directory
Para saber mais sobre o Tensorboard, acesse nossa aula de visualização.