今回は、tf.stackメソッドを紹介します。
tf.stackは複数のテンソルのリストをパックして、新しいテンソルを生成します。
サンプルコードを見てみます。
環境
- python 3.8.0
- tensorflow 2.2.0
サンプルコード
まず以下のようなTensorを用意します。
>>> import tensorflow as tf
>>> t1 = tf.constant([[1,2,3],[4,5,6],[7,8,9]])
>>> t1
<tf.Tensor: shape=(3, 3), dtype=int32, numpy=
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], dtype=int32)>
>>> t2 = tf.constant([[10,11,12],[13,14,15],[16,17,18]])
>>> t2
<tf.Tensor: shape=(3, 3), dtype=int32, numpy=
array([[10, 11, 12],
[13, 14, 15],
[16, 17, 18]], dtype=int32)>
>>> t3 = tf.constant([[19,20,21],[22,23,24],[25,26,27]])
>>> t3
<tf.Tensor: shape=(3, 3), dtype=int32, numpy=
array([[19, 20, 21],
[22, 23, 24],
[25, 26, 27]], dtype=int32)>
3つのテンソルに対してtf.stackを使ってみます。
>>> stacked_t = tf.stack([t1,t2,t3])
>>> stacked_t
<tf.Tensor: shape=(3, 3, 3), dtype=int32, numpy=
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]], dtype=int32)>
>>> history -p -o
ちなみに、Tensorではなく通常の配列等でも同様の操作が行えます。
>>> t1 = [[1,2,3],[4,5,6],[7,8,9]]
>>> a2 = [[10,11,12],[13,14,15],[16,17,18]]
>>> a3 = [[19,20,21],[22,23,24],[25,26,27]]
>>> stacked_t = tf.stack([a1,a2,a3])
>>> stacked_t
<tf.Tensor: shape=(3, 3, 3), dtype=int32, numpy=
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]], dtype=int32)>
参考文献
https://www.tensorflow.org/api_docs/python/tf/stack