Esta página foi traduzida pela API Cloud Translation.
Switch to English

tf.strided_slice

TensorFlow 1 versão Ver fonte no GitHub

Extrai uma fatia strided de um tensor (generalizada Python matriz de indexação).

Veja também tf.slice .

Em vez de chamar esta op diretamente a maioria dos usuários vai querer usar a sintaxe corte NumPy de estilo (ex tensor[..., 3:4:-1, tf.newaxis, 3] ), que é apoiado através tf.Tensor. getitem e tf.Variable. getitem . A interface deste op é uma codificação de baixo nível da sintaxe de corte.

Grosso modo, esta op extrai uma fatia de tamanho (end-begin)/stride do dado input_ tensor. Começando no local especificado por begin a fatia continua adicionando stride para o índice até que todas as dimensões não são menos do que end . Note-se que um passo pode ser negativo, o que faz com que uma fatia inversa.

Dada uma fatia Python input[spec0, spec1, ..., specn] , esta função será chamado como segue.

begin , end , e strides será vectores de comprimento n. n, em geral, não é igual ao posto da input_ tensor.

Em cada campo máscara ( begin_mask , end_mask , ellipsis_mask , new_axis_mask , shrink_axis_mask ) o bit de ordem i corresponderá ao om spec.

Se o bit i de begin_mask está definido, begin[i] é ignorada ea gama mais ampla possível nessa dimensão é usado em seu lugar. end_mask funciona de forma análoga, a não ser com a faixa final.

foo[5:,:,:3] em um tensor de 7x8x9 é equivalente a foo[5:7,0:8,0:3] . foo[::-1] inverte um tensor com a forma de oito.

Se o bit de ordem i de ellipsis_mask é definido, como muitas dimensões não especificado como necessário será inserido entre outras dimensões. Apenas um pouco diferente de zero é permitido em ellipsis_mask .

Por exemplo foo[3:5,...,4:5] em um tensor forma 10x3x3x10 é equivalente a foo[3:5,:,:,4:5] e foo[3:5,...] é equivalente a foo[3:5,:,:,:] .

Se o bit i de new_axis_mask é definida, em seguida, begin , end e stride são ignorados e uma nova dimensão de comprimento 1 é adicionado neste momento no tensor de saída.

Por exemplo, foo[:4, tf.newaxis, :2] iria produzir uma forma (4, 1, 2) do tensor.

Se o bit i de shrink_axis_mask está definido, isso implica que a especificação om encolhe a dimensionalidade por 1, assumindo o valor no índice begin[i] . end[i] e strides[i] são ignoradas neste caso. Por exemplo, em Python se poderia fazer foo[:, 3, :] o que resultaria em shrink_axis_mask igual a 2.

 t = tf.constant([[[1, 1, 1], [2, 2, 2]],
                 [[3, 3, 3], [4, 4, 4]],
                 [[5, 5, 5], [6, 6, 6]]])
tf.strided_slice(t, [1, 0, 0], [2, 1, 3], [1, 1, 1])  # [[[3, 3, 3]]]
tf.strided_slice(t, [1, 0, 0], [2, 2, 3], [1, 1, 1])  # [[[3, 3, 3],
                                                      #   [4, 4, 4]]]
tf.strided_slice(t, [1, -1, 0], [2, -3, 3], [1, -1, 1])  # [[[4, 4, 4],
                                                         #   [3, 3, 3]]]
 

input_ A Tensor .
begin Um int32 ou int64 Tensor .
end Um int32 ou int64 Tensor .
strides Um int32 ou int64 Tensor .
begin_mask Um int32 máscara.
end_mask Um int32 máscara.
ellipsis_mask Um int32 máscara.
new_axis_mask Um int32 máscara.
shrink_axis_mask Um int32 máscara.
var A variável correspondente ao input_ ou Nenhum
name Um nome para a operação (opcional).

Um Tensor do mesmo tipo como input .