いまさらTensorflow 始めます。第三撃 テンソルとは?
tensorflowを始めることになったので、記憶の定着もかねて、先人たちの記録をまとめて整理していく。
“テンソル(英: tensor, 独: Tensor)とは、線形的な量または線形的な幾何概念を一般化したもので、基底を選べば、多次元の配列として表現できるようなものである。しかし、テンソル自身は、特定の座標系によらないで定まる対象である。個々のテンソルについて、対応する量を記述するのに必要な配列の添字の組の数は、そのテンソルの階数とよばれる。 例えば、質量や温度などのスカラー量は階数0のテンソルだと理解される。同様にして力や運動量などのベクトル的な量は階数1のテンソルであり、力や加速度ベクトルの間の異方的な関係などをあらわす線型変換は階数2のテンソルで表される。 物理学や工学においてしばしば「テンソル」と呼ばれているものは、実際には位置や時刻を引数としテンソル量を返す関数である「テンソル場」であることに注意しなければならない。いずれにせよテンソル場の理解のためにはテンソルそのものの概念の理解が不可欠である。”
TensorFlowプログラムは、テンソルデータ構造を使用してすべてのデータを表現する。 TensorFlowテンソルは、n次元の配列やリストとして考えることができる。テンソルは静的型と動的次元を持ちます。 計算グラフでは、ノード間にはテンソルだけが渡されます。
Rank
TensorFlowプログラムでは、テンソルはRankと呼ばれる次元の単位で記述されます。 Rankはマトリックスランクと同じではありません。テンソルのRank(時々、次数または次数またはn次元と呼ばれる)は、テンソルの次元数です。
たとえば、次のテンソル(Pythonリストとして定義されています)のランクは2です。
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Rank Math entity Python example 0 Scalar (magnitude only) s = 483 1 Vector (magnitude and direction) v = [1.1, 2.2, 3.3] 2 Matrix (table of numbers) m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 3 3-Tensor (cube of numbers) t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]] n n-Tensor (you get the idea) ....
Shape
TensorFlowのドキュメントでは、テンソルの次元数を表すために3つの表記法である ランク、形状、ディメンション番号 が使用されます。 次の表は、これらが互いにどのように関連しているかを示しています。
Rank Shape Dimension number Example 0 [] 0-D A 0-D tensor. A scalar. 1 [D0] 1-D A 1-D tensor with shape [5]. 2 [D0, D1] 2-D A 2-D tensor with shape [3, 4]. 3 [D0, D1, D2] 3-D A 3-D tensor with shape [1, 4, 3]. n [D0, D1, ... Dn-1] n-D A tensor with shape [D0, D1, ... Dn-1].
Data types
次元に加えて、テンソルにはデータ型があります。次のデータ型のいずれかをテンソルに割り当てることができます。
Data type Python type Description DT_FLOAT tf.float32 32 bits floating point. DT_DOUBLE tf.float64 64 bits floating point. DT_INT8 tf.int8 8 bits signed integer. DT_INT16 tf.int16 16 bits signed integer. DT_INT32 tf.int32 32 bits signed integer. DT_INT64 tf.int64 64 bits signed integer. DT_UINT8 tf.uint8 8 bits unsigned integer. DT_UINT16 tf.uint16 16 bits unsigned integer. DT_STRING tf.string Variable length byte arrays. Each element of a Tensor is a byte array. DT_BOOL tf.bool Boolean. DT_COMPLEX64 tf.complex64 Complex number made of two 32 bits floating points: real and imaginary parts. DT_COMPLEX128 tf.complex128 Complex number made of two 64 bits floating points: real and imaginary parts. DT_QINT8 tf.qint8 8 bits signed integer used in quantized Ops. DT_QINT32 tf.qint32 32 bits signed integer used in quantized Ops. DT_QUINT8 tf.quint8 8 bits unsigned integer used in quantized Ops.
画像データを表す場合は、 TensorのRankは[3]、 Shapeは[width, height, channel]、 データ型はtf.uint8*3 となる。