いまさらTensorflow 始めます。第三撃  テンソルとは?

tensorflowを始めることになったので、記憶の定着もかねて、先人たちの記録をまとめて整理していく。

テンソル」とは、「n次元の多次元配列」。 wiki

テンソル - Wikipedia

テンソル(英: 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 となる。

参考: Tensor Ranks, Shapes, and Types  |  TensorFlow

www.buildinsider.net