目錄python
paddom
tile性能
broadcast_tocode
import tensorflow as tf
a = tf.reshape(tf.range(9), [3, 3]) a
<tf.Tensor: id=17, shape=(3, 3), dtype=int32, numpy= array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype=int32)>
tf.pad(a, [[0, 0], [0, 0]])
<tf.Tensor: id=20, shape=(3, 3), dtype=int32, numpy= array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype=int32)>
tf.pad(a, [[ 1, 0, ], [0, 0]])
<tf.Tensor: id=23, shape=(4, 3), dtype=int32, numpy= array([[0, 0, 0], [0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype=int32)>
tf.pad(a, [[1, 1], [0, 0]])
<tf.Tensor: id=26, shape=(5, 3), dtype=int32, numpy= array([[0, 0, 0], [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 0, 0]], dtype=int32)>
tf.pad(a, [[1, 1], [1, 0]])
<tf.Tensor: id=29, shape=(5, 4), dtype=int32, numpy= array([[0, 0, 0, 0], [0, 0, 1, 2], [0, 3, 4, 5], [0, 6, 7, 8], [0, 0, 0, 0]], dtype=int32)>
tf.pad(a, [[1, 1], [1, 1]])
<tf.Tensor: id=32, shape=(5, 5), dtype=int32, numpy= array([[0, 0, 0, 0, 0], [0, 0, 1, 2, 0], [0, 3, 4, 5, 0], [0, 6, 7, 8, 0], [0, 0, 0, 0, 0]], dtype=int32)>
a = tf.random.normal([4, 28, 28, 3]) a.shape
TensorShape([4, 28, 28, 3])
# 對圖片的行和列padding兩行 b = tf.pad(a, [[0, 0], [2, 2], [2, 2], [0, 0]]) b.shape
TensorShape([4, 32, 32, 3])
a = tf.reshape(tf.range(9), [3, 3]) a
<tf.Tensor: id=76, shape=(3, 3), dtype=int32, numpy= array([[0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype=int32)>
# 1表示行不復制,2表示列複製爲兩倍 tf.tile(a, [1, 2])
<tf.Tensor: id=79, shape=(3, 6), dtype=int32, numpy= array([[0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5], [6, 7, 8, 6, 7, 8]], dtype=int32)>
tf.tile(a, [2, 1])
<tf.Tensor: id=82, shape=(6, 3), dtype=int32, numpy= array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 1, 2], [3, 4, 5], [6, 7, 8]], dtype=int32)>
tf.tile(a, [2, 2])
<tf.Tensor: id=85, shape=(6, 6), dtype=int32, numpy= array([[0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5], [6, 7, 8, 6, 7, 8], [0, 1, 2, 0, 1, 2], [3, 4, 5, 3, 4, 5], [6, 7, 8, 6, 7, 8]], dtype=int32)>
aa = tf.expand_dims(a, axis=0) aa
<tf.Tensor: id=90, shape=(1, 3, 3), dtype=int32, numpy= array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]]], dtype=int32)>
tf.tile(aa, [2, 1, 1])
<tf.Tensor: id=93, shape=(2, 3, 3), dtype=int32, numpy= array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[0, 1, 2], [3, 4, 5], [6, 7, 8]]], dtype=int32)>
# 不佔用內存,性能更優 tf.broadcast_to(aa, [2, 3, 3])
<tf.Tensor: id=96, shape=(2, 3, 3), dtype=int32, numpy= array([[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[0, 1, 2], [3, 4, 5], [6, 7, 8]]], dtype=int32)>