TensorFlow で 2つのテンソルを水平方向に連結する

Muhammad Zohaib 2024年2月15日
  1. テンソルの水平連結
  2. テンソルの視覚的表現
  3. TensorFlow で 2つのテンソルを水平方向に連結する
TensorFlow で 2つのテンソルを水平方向に連結する

この簡単な記事では、Python の TensorFlow v2.8.2 フレームワークを使用した 2つのテンソルの水平連結について説明します。 最初に、Python でのテンソルの水平連結の視覚的表現について説明し、次にそれらを連結する方法について説明します。

テンソルの水平連結

テンソルは、均一な型 (dtype と呼ばれる) を持つ多次元配列です。 Python では、多次元配列用にサポートされているライブラリが多数あります (例: NumPyPyTorchTensorFlow など)。

TensorFlow ライブラリは Google によって開発された、高度で多機能なライブラリの 1つです。 機械学習タスクの実行中にテンソルを簡単に作成および操作するのに最適です。

テンソルの視覚的表現

テンソルは多次元にすることができます。 例: 1 次元 (ランク 1 テンソル)、2 次元 (ランク 2 テンソル)、3 次元 (ランク 3 テンソル) など。

1 次元テンソルの水平連結

水平連結の場合、テンソルは最初の次元が同じでなければなりません。 下の図では、テンソル A (shape=(1,3)) とテンソル B (shape=(1,3)) を水平方向に連結すると、結果のテンソルが得られます。

この場合、Tensor A と Tensor B は同じ最初の次元 (つまり、1 に等しい) を持ちます。 次の図に示すように、連結されたテンソルは shape=(1, 6) になります。

一次元テンソルの水平連結

2 次元テンソルの水平連結

2 次元テンソルは行列のように見えます。 下の図では、2つの 2 次元テンソル (つまり、テンソル A (shape=(2,3)) とテンソル B (shape=(2,3))) を水平方向に連結すると、結果のテンソルが得られます。

Tensor A と Tensor B は同じ最初の次元 (つまり、2 に等しい) を持ち、結果の連結テンソルは shape=(2, 6) であることに注意してください。

2 次元テンソルの水平連結

TensorFlow で 2つのテンソルを水平方向に連結する

ここで、Python で TensorFlow を使用してテンソルを水平方向に連結する方法を見ていきます。

pip install tensorflow

まず、上記のコマンドを使用して TensorFlow ライブラリをインストールします。

import tensorflow as tf

t1 = [[1, 2], [3, 4]]
t2 = [[5, 6, 7], [8, 9, 10]]
result = tf.concat([t1, t2], 1)
print(result)

上記のコードでは、最初に TensorFlow ライブラリをインポートしてから、形状 (2, 2)(2, 3) の 2つのテンソル t1t2 をそれぞれ宣言しました。 その後、tf.concat(values, axis, name) 関数を使用して、軸 1 に沿ってテンソルを連結しました。

ここで、 axis= 1 は、テンソルが水平方向に連結されることを意味します。

tf.concat(values, axis, name) 関数は次の 3つの引数を取ります。

  1. values - テンソルのリスト。
  2. axis - 連結する次元を表す 0 次元テンソル。
  3. name (オプション) - 操作の名前を表します。

concat 関数の詳細な説明は こちら にあります。

上記のコードは、次の出力テンソルを提供します。

tf.Tensor(
[[ 1  2  5  6  7]
 [ 3  4  8  9 10]], shape=(2, 5), dtype=int32)
]

結果のテンソルは (2, 5) の形になります。 これは、result テンソルが 2 行 5 列で構成されているため明らかです。