Path: blob/master/site/pt-br/tutorials/customization/basics.ipynb
25118 views
Copyright 2018 The TensorFlow Authors.
Fundamentos de personalização: tensores e operações
Este é um tutorial introdutório do TensorFlow que mostra como:
Importar o pacote necessário.
Criar e usar tensores.
Usar a aceleração de GPU.
Criar um pipeline de dados com
tf.data.Dataset
.
Importe o TensorFlow
Para começar, importe o módulo tensorflow
. A partir do TensorFlow 2, a eager execution é ativada por padrão. A eager execution permite um front-end mais interativo para o TensorFlow, que você conhecerá depois em mais detalhes.
Tensores
Um Tensor é um array multidimensional. Semelhante aos objetos ndarray
do NumPy, os objetos tf.Tensor
têm um tipo de dados e um formato. Além disso, os tf.Tensor
s podem residir na memória de um acelerador (como uma GPU). O TensorFlow oferece uma vasta biblioteca de operações (por exemplo, tf.math.add
, tf.linalg.matmul
e tf.linalg.inv
), que consomem e produzem tf.Tensor
s. Essas operações convertem automaticamente os tipos built-in do Python. Por exemplo:
Cada tf.Tensor
tem um formato e um tipo de dados:
As diferenças mais óbvias entre arrays do NumPy e tf.Tensor
s são as seguintes:
Os Tensores podem ser armazenados na memória de aceleradores (como GPU e TPU).
Os Tensores são imutáveis.
Compatibilidade com o NumPy
A conversão entre um tf.Tensor
do TensorFlow e um ndarray
do NumPy é fácil:
As operações do TensorFlow convertem automaticamente os ndarrays do NumPy para Tensores.
As operações do NumPy convertem automaticamente os Tensores para ndarrays do NumPy.
Os Tensores são convertidos explicitamente para ndarrays do NumPy usando o método .numpy()
. Essas conversões são geralmente baratas, já que o array e o tf.Tensor
compartilham a representação de memória subjacente, se possível. No entanto, compartilhar a representação subjacente nem sempre é possível, já que o tf.Tensor
pode ser hospedado na memória da GPU, enquanto os arrays do NumPy são sempre armazenados na memória do host, e a conversão envolve uma cópia da memória da GPU para a do host.
Aceleração de GPU
Várias operações do TensorFlow são aceleradas usando a GPU para computação. Sem qualquer anotação, o TensorFlow decide automaticamente usar a GPU ou CPU para uma operação — copiando o tensor entre a memória da CPU e da GPU, se necessário. Os Tensores produzidos por uma operação são geralmente armazenados na memória do dispositivo em que a operação está sendo executada. Por exemplo:
Nomes do dispositivo
A propriedade Tensor.device
fornece um nome de string totalmente qualificado do dispositivo que está hospedando o conteúdo do tensor. Esse nome codifica vários detalhes, como um identificador do endereço da rede do host em que esse programa está sendo executado e o dispositivo nesse host. Isso é necessário para a execução distribuída de um programa do TensorFlow. A string termina com GPU:<N>
se o tensor estiver na GPU N
do host.
Posicionamento explícito do dispositivo
No TensorFlow, o posicionamento se refere à maneira como as operações individuais são atribuídas a (colocadas em) um dispositivo para execução. Conforme mencionado, quando nenhuma orientação explícita é fornecida, o TensorFlow decide automaticamente em que dispositivo executar uma operação e copia os tensores para esse dispositivo, se necessário.
No entanto, as operações do TensorFlow podem ser colocadas explicitamente em dispositivos específicos usando o gerenciador de contexto tf.device
. Por exemplo:
Datasets
Esta seção usa a API tf.data.Dataset
na criação de um pipeline para alimentar seu modelo com dados. tf.data.Dataset
é usado para criar pipelines de entrada complexos e eficientes a partir de partes simples e reutilizáveis que alimentarão os loops de treinamento ou avaliação do seu modelo. (Consulte o guia tf.data: crie pipelines de entrada do TensorFlow para saber mais.)
Crie um Dataset
de origem
Crie um dataset de origem usando uma das funções de fábrica, como tf.data.Dataset.from_tensors
e tf.data.Dataset.from_tensor_slices
, ou usando objetos que leem arquivos, como tf.data.TextLineDataset
ou tf.data.TFRecordDataset
. Consulte a seção Lendo dados de entrada do guia tf.data: crie pipelines de entrada do TensorFlow para mais informações.
Aplique transformações
Use as funções de transformação, como tf.data.Dataset.map
, tf.data.Dataset.batch
e tf.data.Dataset.shuffle
, para aplicar transformações a registros de datasets.
Faça a iteração
Os objetos tf.data.Dataset
são compatíveis com a iteração para fazer loops nos registros: