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) との乗算の前に自動的にテンソルに変換します。 tensor1
と tensor
は同じ型でなければならないことに注意してください。
ここで、明示的な変換方法を見ていきます。 テンソルで呼び出すには、.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 の間の相互に関連する操作を確認できます。