【tensorflow2】複数のテンソルのリストをパックする tf.stackの基本的な使い方

tensorflow

今回は、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

タイトルとURLをコピーしました