Path: blob/master/site/pt-br/guide/tensor_slicing.ipynb
25115 views
Copyright 2020 The TensorFlow Authors.
Introdução ao fatiamento de tensores
Ao trabalhar com aplicativos de ML, como a detecção de objetos e o NLP, às vezes é preciso trabalhar com subseções (fatias) de tensores. Por exemplo, se a arquitetura do modelo incluir roteamento, em que uma camada pode controlar o exemplo de treinamento roteado para a próxima camada. Nesse caso, você pode usar ops de fatiamento de tensores para dividir os tensores e colocá-los de volta na ordem certa.
Em aplicativos NLP, você pode usar o fatiamento de tensores para o mascaramento de palavras durante o treinamento. Por exemplo, você pode gerar dados de treinamento a partir de uma lista de frases ao escolher um índice de palavras para mascarar em cada frase, tirando a palavra como um rótulo e a substituindo por um token de máscara.
Neste guia, você aprenderá a usar as APIs TensorFlow para:
Extrair fatias de um tensor
Inserir dados em índices específicos de um tensor
Este guia presume a familiaridade com a indexação de tensores. Leia as seções de indexação dos guias sobre Tensores e NumPy do TensorFlow antes de começar com este tutorial.
Configuração
Extraia fatias de tensores
Realize o fatiamento de tensores semelhante ao do NumPy usando tf.slice
.
Como alternativa, você pode usar uma sintaxe mais pythônica. Observe que as fatias do tensor estão uniformemente espaçadas em um intervalo start-stop.
Para tensores bidimensionais, você pode usar algo como:
Você também pode usar tf.slice
em tensores com mais dimensões.
Além disso, é possível usar tf.strided_slice
para extrair fatias de tensores com o "striding" sobre as dimensões de tensores.
Use tf.gather
para extrair índices específicos de um único eixo de um tensor.
tf.gather
não requer que os índices estejam uniformemente espaçados.
Para extrair fatias de vários eixos de um tensor, use tf.gather_nd
. Isso é útil quando você quer coletar os elementos de uma matriz, e não só as linhas ou colunas.
Insira dados em tensores
Use tf.scatter_nd
para inserir dados em fatias/índices específicos de um tensor. Observe que o tensor em que você inserir valores é inicializado com zeros.
Métodos como tf.scatter_nd
que exigem tensores inicializados com zeros são semelhantes aos inicializadores de tensores esparsos. Você pode usar tf.gather_nd
e tf.scatter_nd
para imitar o comportamento das ops de tensores esparsos.
Considere um exemplo em que você constrói um tensor esparso usando esses dois métodos em conjunto.
Isso é parecido com o seguinte:
Para inserir dados em um tensor com valores pré-existentes, use tf.tensor_scatter_nd_add
.
De maneira semelhante, use tf.tensor_scatter_nd_sub
para subtrair valores de um tensor com valores pré-existentes.
Use tf.tensor_scatter_nd_min
para copiar os valores mínimos elemento a elemento de um tensor para outro.
De maneira semelhante, use tf.tensor_scatter_nd_max
para copiar os valores máximos elemento a elemento de um tensor para outro.
Leituras e recursos adicionais
Neste guia, você aprendeu a usar as operações de fatiamento de tensores disponíveis com o TensorFlow para exercer um controle mais fino sobre os elementos nos seus tensores.
Confira as operações de fatiamento disponíveis com o NumPy do TensorFlow, como
tf.experimental.numpy.take_along_axis
etf.experimental.numpy.take
.Consulte também o Guia de tensores e o Guia de variáveis.