tf
package provides functions that update tensors and their shapes after creation. This table lists these transformation functions and provides a description of each.Functions for Transforming Tensors
Function | Description |
cast(tensor, dtype, name=None) |
Changes the tensor's data type to the given type |
reshape(tensor, shape, name=None) |
Returns a tensor with the same elements as the given tensor with the given shape |
squeeze(tensor, axis=None, name=None, squeeze_dims=None) |
Removes dimensions of size 1 |
reverse(tensor, axis, name=None) |
Reverses given dimensions of the tensor |
slice(tensor, begin, size, name=None) |
Extracts a portion of a tensor |
stack(tensors, axis=0, name='stack') |
Combines a list of tensors into a tensor of greater rank |
unstack(tensor, num=None, axis=0, name='unstack') |
Splits a tensor into a list of tensors of lesser rank |
reshape
to convert a four-element vector into a 2-x-2 matrix:
vec = tf.constant([1., 2., 3., 4.])If any dimension of a tensor has a size of 1, callingmat = tf.reshape(vec, [2, 2])
<strong># Result: [[1. 2.], [3. 4.]]</strong>
squeeze
will remove it from the tensor, thereby reducing the tensor's rank. If the function’s axis
parameter identifies one or more dimensions, only those dimensions will be affected by squeeze
.In the reverse
function, the axis
parameter identifies one or more dimensions to be reversed. The following code demonstrates how reverse
works:
mat = tf.constant([[1., 2., 3.], [4., 5., 6.]])Therev_mat = tf.reverse(end, [0])
<strong># Result: [[4. 5. 6.], [1. 2. 3.]]</strong>
rev_mat = tf.reverse(end, [1])
<strong># Result: [[3. 2. 1.], [6. 5. 4.]]</strong>
rev_mat = tf.reverse(end, [0, 1])
<strong># Result: [[6. 5. 4.], [3. 2. 1.]]</strong>
slice
function extracts subtensors from a tensor. The begin
parameter identifies the index of the first element to be extracted, and size
identifies the shape of the tensor to be extracted, starting from the begin
location.For example, suppose that you want to extract the lower-right 2-x-2 matrix from a 3-x-3 matrix. The index of the first extracted element is [1, 1] and the size of the desired tensor is [2, 2]. The following code uses slice
to perform this extraction:
mat =tf.constant([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
slice_mat = tf.slice(mat, [1, 1], [2, 2])
<strong># Result: [[5. 6.] [7. 8.]]</strong>
stack
accepts a list of tensors of rank N and returns a single tensor of rank N+1. In addition to having the same rank, the input tensors must have the same shape. The following code demonstrates how stack
can be used. The function combines three one-dimensional tensors into a two-dimensional tensor:
t1 = tf.constant([1., 2.])When these operations execute,t2 = tf.constant([3., 4.])
t3 = tf.constant([5., 6.])
t4 = tf.stack([t1, t2, t3])
t4
will equal [[1. 2.] [3. 4.] [5. 6.]]. If the axis parameter is set to 1, stacking will be performed along the second dimension, so t4 will set to [[1. 3. 5.] [2. 4. 6.]].unstack
performs the inverse operation of stack
. That is, unstack accepts a tensor of rank N and returns a list of tensors of rank N-1. The num parameter determines how many tensors should be unpacked, and if this isn't set, unstack
infers the number from the tensor’s shape.