# TF: tips 1

# tf tips. 1 - tf.strided_slice

## [TODO] use TensorFlow to slice tensor with strides

```
import tensorflow as tf
```

Let’s say we have the following tensor.

```
sample = tf.constant(
[[[11, 12, 13], [21, 22, 23]],
[[31, 32, 33], [41, 42, 43]],
[[51, 52, 53], [61, 62, 63]]])
```

The tensor’s shape is (3, 2, 3). It has 3 rows, 2 columns and 3 items. It’s a bit tricky to visually understand at first.

When it’s written as above, approach it from row to get your head around its shape.

```
print(sample)
```

```
Tensor("Const:0", shape=(3, 2, 3), dtype=int32)
```

Here I’m going to use `tf.strided_slice`

to slice the tensor into various shapes.

`tf.strided_slice`

takes a lot of parameters, and the core ones are `begin`

, `end`

and `strides`

.

As our tensor has 3 dimensions, so do these params.

Each point in `begin`

corresponds to the ones in `end`

and `strides`

.

Let’s have a look at the sample below.

### 1. first row

```
slice = tf.strided_slice(sample, begin=[0, 0, 0], end=[1, 2, 3], strides=[1, 1, 1])
with tf.Session() as sess:
result = sess.run(slice)
print(result)
```

```
[[[11 12 13]
[21 22 23]]]
```

To get the first row from the given tensor, I passed `[0, 0, 0]`

as `begin`

and `[1, 2, 3]`

as `end`

. Here we set `strides`

as `[1, 1, 1]`

because we’re not skipping any items. We want row from 0 to 1, column from 0 to 2, items from 0 to 3. Therefore, I get 1 row, 2 columns and 3 items. I could have just passed `int(sample.shape[1])`

instead of column value to generalise it.

```
slice = tf.strided_slice(sample, begin=[0, 0, 0], end=[1, int(sample.shape[1]), int(sample.shape[2])], strides=[1, 1, 1])
with tf.Session() as sess:
result = sess.run(slice)
print(result)
```

```
[[[11 12 13]
[21 22 23]]]
```

### 2. all of the list without the last item

```
slice = tf.strided_slice(sample, begin=[0, 0, 0], end=[3, 2, -1], strides=[1, 1, 1])
with tf.Session() as sess:
result = sess.run(slice)
print(result)
```

```
[[[11 12]
[21 22]]
[[31 32]
[41 42]]
[[51 52]
[61 62]]]
```

To remove the last item, I just need to pass `-1`

in ‘end’.

### 3. Strides

```
slice = tf.strided_slice(sample, begin=[0, 0, 0], end=[3, 2, 3], strides=[2, 2, 2])
with tf.Session() as sess:
result = sess.run(slice)
print(result)
```

```
[[[11 13]]
[[51 53]]]
```

By changing the values of `strides`

from 1 to 2, I skip every other item in the tensor.

# tf tips. 2 - tf.fill

## [TODO] use TensorFlow to create a tnesor filled with scalar value.

```
sample_fill = tf.fill(dims=[2, 3], value=9)
with tf.Session() as sess:
result = sess.run(sample_fill)
print(result)
```

```
[[9 9 9]
[9 9 9]]
```

This function generates a tensor with a list of `dims`

and fill it with a scalar `value`

. You cannot assign a list as `value`

.

# tf tips. 3 - tf.concat

## [TODO] use TensorFlow to concatnate tensors along one dimension.

```
t1 = [[1, 2, 3],
[4, 5, 6]]
t2 = [[7, 8, 9],
[10, 11, 12]]
concat1 = tf.concat([t1, t2], 0)
concat2 = tf.concat([t1, t2], 1)
with tf.Session() as sess:
result1 = sess.run(concat1)
print("concat example -- 1: row-wise")
print(result1)
print("\n")
result2 = sess.run(concat2)
print("concat example -- 2: column-wise")
print(result2)
```

```
concat example -- 1: row-wise
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
concat example -- 2: column-wise
[[ 1 2 3 7 8 9]
[ 4 5 6 10 11 12]]
```