library(tensorflow)
<- as_tensor(array(1:15, dim = c(3, 5)))
x
x # by default, numerics supplied to [...] are interpreted R style
1] # first column
x[,1:2,] # first two rows
x[1, drop = FALSE] # 1 column matrix
x[,
# strided steps can be specified in R syntax or python syntax
seq(1, 5, by = 2)]
x[, 1:5:2]
x[, # if you are unfamiliar with python-style strided steps, see:
# https://numpy.org/doc/stable/reference/arrays.indexing.html#basic-slicing-and-indexing
# missing arguments for python syntax are valid, but they must by backticked
# or supplied as NULL
`::2`]
x[, NULL:NULL:2]
x[, `2:`]
x[,
# all_dims() expands to the shape of the tensor
# (equivalent to a python ellipsis `...`)
# (not to be confused with R dots `...`)
<- as_tensor(array(1:(3^5), dim = c(3,3,3,3,3)))
y all.equal(y[all_dims(), 1],
1])
y[, , , ,
# tf$newaxis are valid (equivalent to a NULL)
$newaxis]
x[,, tfNULL]
x[,,
# negative numbers are always interpreted python style
# The first time a negative number is supplied to `[`, a warning is issued
# about the non-standard behavior.
-1,] # last row, with a warning
x[-1,] # the warning is only issued once
x[
# specifying `style = 'python'` changes the following:
# + zero-based indexing is used
# + slice sequences in the form of `start:stop` do not include `stop`
# in the returned value
# + out-of-bounds indices in a slice are valid
# The style argument can be supplied to individual calls of `[` or set
# as a global option
# example of zero based indexing
0, , style = 'python'] # first row
x[1, , style = 'python'] # second row
x[
# example of slices with exclusive stop
options(tensorflow.extract.style = 'python')
0:1] # just the first column
x[, 0:2] # first and second column
x[,
# example of out-of-bounds index
0:10]
x[, options(tensorflow.extract.style = NULL)
# slicing with tensors is valid too, but note, tensors are never
# translated and are always interpreted python-style.
# A warning is issued the first time a tensor is passed to `[`
$constant(0L):tf$constant(2L)]
x[, tf# just as in python, only scalar tensors are valid
# https://www.tensorflow.org/api_docs/python/tf/Tensor#__getitem__
# To silence the warnings about tensors being passed as-is and negative numbers
# being interpreted python-style, set
options(tensorflow.extract.style = 'R')
# clean up from examples
options(tensorflow.extract.style = NULL)
[.tensorflow.tensor
Subset tensors with [
Description
Subset tensors with [
Usage
## S3 method for class 'tensorflow.tensor'
[(
x,
..., drop = TRUE,
style = getOption("tensorflow.extract.style"),
options = tf_extract_opts(style)
)
Arguments
Arguments | Description |
---|---|
x | Tensorflow tensor |
… | slicing specs. See examples and details. |
drop | whether to drop scalar dimensions |
style | One of "python" or "R" . |
options | An object returned by tf_extract_opts() |