TensorFlow™ no Databricks
Placeholders
Até agora, usamos Variáveis
para gerenciar nossos dados, mas há uma estrutura mais básica, o placeholder
. O placeholder
é apenas uma variável à qual atribuiremos dados posteriormente. Ele permite criar operações e construir o gráfico de computação sem ter nenhum dado. Na terminologia do TensorFlow
, alimentamos dados no gráfico usando esses placeholders.
Este exemplo funciona de maneira um pouco diferente dos anteriores. Vamos examiná-lo em detalhes.
Primeiro, importamos o tensorflow
normalmente. Em seguida, criamos um placeholder
chamado x
, ou seja, um lugar na memória onde armazenaremos um valor mais tarde.
Depois, criamos um tensor chamado correspondente à multiplicação de x
por 2. Observe que ainda não definimos um valor inicial para x
.
Agora, temos uma operação (y
) definida e podemos executá-la em uma sessão. Criamos um objeto de sessão e, em seguida, executamos apenas a variável y
. Observe que, se definirmos um gráfico de operações muito maior, só poderemos executar um pequeno segmento do gráfico. Esta avaliação de subgráfico é uma das grandes vantagens do TensorFlow, e que não se encontra em muitas outras bibliotecas do mesmo tipo.
Para executar y
, é preciso conhecer os valores de x
. Definimos isso no argumento feed_dict
da execução
. Declaramos que os valores de x
são [1, 2, 3]
. Executamos y
, que dá o resultado de [2, 4, 6]
.
Os placeholders não precisam ser dimensionados estaticamente. Vamos atualizar nosso programa para permitir que x assuma qualquer tamanho. Altere a definição de x
para:
Agora, ao definirmos os valores de x
no feed_dict
, podemos ter qualquer número de valores. O código ainda deve funcionar e fornecer a mesma resposta, mas agora ele também funcionará com qualquer número de valores em feed_dict
.
Os placeholders também podem ter múltiplas dimensões, o que permite armazenar matrizes. No exemplo a seguir, criamos uma matriz 3 por 2 e armazenamos alguns números nela. Em seguida, usamos a mesma operação de antes para duplicar os números por elemento.
A primeira dimensão do placeholder é None
, o que significa que podemos ter qualquer número de linhas. A segunda dimensão é definida como 3, o que significa que cada linha precisa ter três colunas de dados.
Podemos estender isso para aceitar um número arbitrário de dimensões None
. Neste exemplo, carregamos a imagem da nossa última lição e, em seguida, criamos um placeholder que armazena uma fatia dessa imagem. Essa fatia é um segmento 2D da imagem, mas cada "pixel" tem três componentes (vermelho, verde, azul). Portanto, precisamos de None
para as duas primeiras dimensões, mas precisamos de 3
(embora None
também funcione) para a última dimensão. Em seguida, usamos o método slice
do TensorFlow para extrair um subsegmento da imagem e operar sobre ele.
- Você pode encontrar outras funções para matrizes no TensorFlow na documentação oficial.
- Separe a imagem em quatro "cantos" e, em seguida, junte-as.
- Converta a imagem em escala de cinza. Para fazer isso, você pode exibir apenas um dos três canais de cores. Você também pode calcular a média dos três canais e torná-la cinza.