TensorFlow で Tensor を NumPy 配列に変換する

Hafiz Muhammad Zohaib 2023年6月21日
  1. TensorFlow テンソルと NumPy 配列
  2. TensorFlow で Tensor を NumPy 配列に変換する
TensorFlow で Tensor を NumPy 配列に変換する

この記事では、TensorFlow でテンソルを NumPy 配列に変換する方法を示します。 NumPy と TensorFlow の互換性は優れており、テンソルを NumPy 配列に簡単に変換できます。

この記事では、テンソルを NumPy 配列に変換する 2つの方法を紹介します。

TensorFlow テンソルと NumPy 配列

配列は、要素のコレクションを格納するために使用されるデータ構造です。 配列に関連するより高速な数値演算をサポートするために、NumPy と TensorFlow は便利なライブラリであり、Python で簡単に使用できます。

NumPy ライブラリは主に従来の機械学習タスクに使用されますが、TensorFlow は深層学習の計算を非常によくサポートします。 配列に対するテンソルの重要な利点の 1つは、GPU がプリミティブ配列よりもテンソルの処理に優れていることです。

TensorFlow で Tensor を NumPy 配列に変換する

TensorFlow は、実装中の NumPy 配列の自動変換をサポートしています。 自動変換のコードは次のとおりです。

!pip install tensorflow==2.9.1
import numpy as np
import tensorflow as tf

ndarray = np.ones([3, 3])
print("TensorFlow operations convert numpy arrays to Tensors automatically")
tensor = tf.math.multiply(ndarray, 42)
print(tensor)

上記のコードでは、ndarray は NumPy 配列であり、tf.math.multiply(tensor1, tensor2) はそれを引数として取り、他のテンソル (つまり 42) との乗算の前に自動的にテンソルに変換します。 tensor1tensor は同じ型でなければならないことに注意してください。

ここで、明示的な変換方法を見ていきます。 テンソルで呼び出すには、.numpy() 関数を使用する必要があります。

# Convert tensor to numpy array explicitly.
a = tf.constant([[1, 2], [3, 4]])
b = a.numpy()
print(type(b))

上記のコードでは、a は、テンソル a を NumPy 配列に変換する組み込みの .numpy() 関数を呼び出す定数テンソルです。

上記の出力は次のようになります。

numpy.ndarray

TensorFlow では、熱心な実行は、舞台裏で視覚的なグラフを構築することなく、テンソルのさまざまな演算の高速実行をサポートする環境です。

デフォルトでは、TensorFlow での熱心な実行が有効になっています。 しかし、実装中に無効にすると、テンソルを NumPy 配列に変換できなくなります。

その場合、次のコードが表示されます。

tf.compat.v1.disable_eager_execution()  # need to disable eager in TF2.9.1
# Multiplication
a = tf.constant([1, 2])
b = tf.constant(6)
c = a * b
sess = tf.compat.v1.Session()
# Evaluate the tensor c.
print(type(sess.run(c)))

この ページにアクセスして、TensorFlow と NumPy の間の相互に関連する操作を確認できます。