雑務に追われて、久しぶりに記事をアップ。MLにおけるTensorFlowの人気は相当だけど、体系的な知識をまとめたテキストは少ないため、場当たり的なアルゴリズムの利用に終ってしまう傾向にある。もう少し、きちんと整理しておきたい。
1. 主要なパッケージ
1 2 3 4 5 6 7 8 9 10 11 |
パッケージ 内容 tensorflow TensorFlow主要フレームワーク: "import tensorflow as tf" tf.train 最適化アルゴリズムと訓練 tf.nn ニューラルネットワーククラスと算術 tf.layers 多層ニューラルネットに関係する機能 tf.contrib 実験的コード tf.image 画像プロセッシング機構 tf.estimator 訓練と評価のハイレベルツール tf.logging データをログに書き込む機能 tf.summary サマリーデータを作成するクラス tf.metrics 機械学習の結果を測定する機能 |
2.データ型
1 2 3 4 5 6 7 8 |
bool 論理値 uint8/uint16 符号なし整数 quint8/quint16 量子化符号なし整数 int8/int16/int32/int64 符号付き整数 qint8/qint32 量子化符号付き整数 float16/float32/float64 浮動小数点 complex64/complex128 Complex 浮動小数点 string 文字列 |
3.既知の値を持つテンソルの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
コード:constant(value, dtype=None, shape = None, name = 'Const', verify_shape=False) 説明: valueを値として持つテンソル作成 コード:zeros(shape, dtype=tf.float32, name = None) 説明: zeroを持つテンソル作成 コード:ones(shape, dtype=tf.float32, name=None) 説明: 1を持つテンソル作成 コード:fill(dims, value, name=None) 説明: valueとして持つテンソル作成 コード:linspace(start, stop, num, name=None) 説明: 開始とストップの範囲で線形の値で構成されるテンソル作成 コード:range(start, limit, delta=1, dtype=None, name='range') 説明: 指定された範囲のテンソル作成 |
4.乱数値を持つテンソルの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
コード:random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 説明: 正規分布する乱数値で構成される コード:truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 説明: 2-SD以内の正規分布する乱数値で構成される コード:random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None) 説明: 最小値と最大値の間に一様分布する乱数値で構成される コード:random_shuffle(tensor, seed=None, name=None) 説明: テンソルを一次元的にシャッフル コード:set_random_seed(seed) 説明: seedで指定した乱数値を生成 |
5. テンソルの変形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
コード:cast(tensor, dtype, name=None) 説明: データ型の変更 コード:reshape(tensor, shape, name=None) 説明: 点するの形状変形 コード:squeeze(tensor, axis=None, name=None, squeeze_dims=None) 説明: 一次元へ圧縮 コード:reverse(tensor, axis, name=None) 説明: テンソルの要素の順を逆にする コード:slice(tensor, begin, size, name=None) 説明: テンソルの部分を抽出 コード:stack(tensors, axis=0, name='stack') 説明: 複数のテンソルを結合 コード:unstack(tensor, num=None, axis=0, name='unstack') 説明: テンソルを分離する |
6. 算術
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
コード:add(x, y, name=None) 説明: 和算 コード:subtract(x, y, name=None) 説明: 減算 コード:multiply(x, y, name=None) 説明: 乗算 コード:divide(x, y, name=None) 説明: 除算 コード:div(x, y, name=None) 説明: 分離 コード:add_n(inputs, name=None) 説明: 複数のテンソルを加える コード:scalar_mul(scalar, x) 説明: scalarで加算 コード:mod(x, y, name=None) 説明: 除算余り コード:abs(x, name=None) 説明: 絶対値 コード:negative(x, name=None) 説明: 負 コード:sign(x, name=None) 説明: 符号抽出 コード:reciprocal(x, name=None) 説明: 逆数 |
7. 算術
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
コード:round(x, name=None) 説明: 四捨五入 コード:rint(x, name=None) 説明: 近い偶数値へ コード:ceil(x, name=None) 説明: 切り上げ値 コード:floor(x, name=None) 説明: 切り下げ値 コード:maximum(x, y, name=None) 説明: 大きい値 コード:minimum(x, y, name=None) 説明: 小さい値 コード:argmax(x, axis=None, name=None, dimension=None) 説明: 最大値のインデックス コード:argmin(x, axis=None, name=None, dimension=None) 説明: 最小値のインデックス |
8. 指数、対数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
コード:square(x, name=None) 説明: 平方 コード:squared_difference(x, y, name=None) 説明: 差の平方 コード:sqrt(x, name=None) 説明: 平方根 コード:rsqrt(x, name=None) 説明: 平方根の逆数 コード:pow(x, y, name=None) 説明: 累乗 コード:exp(x, name=None) 説明: 指数 コード:expm1(x, name=None) 説明: 指数-1, exp(x) - 1 コード:log(x, name=None) 説明: 自然対数 コード:log1p(x, name=None) 説明: log(x + 1) コード:erf(x, name=None) 説明: 誤差関数 コード:erfc(x, name=None) 説明: 付加誤差関数 |
9.ベクトル、行列演算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
コード:tensordot(a, b, axes, name=None) 説明: 総和 コード:cross(a, b, name=None) 説明: アダマール積 コード:diag(diagonal, name=None) 説明: 対角行列 コード:trace(x, name=None) 説明: 対角要素の総和 コード:transpose(x, perm=None, name='transpose') 説明: 行列入れ替え その他(以下説明省略): コード:eye(num_rows, num_columns=None, batch_shape=None, dtype=tf.float32, name=None) コード:matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b=False, a_is_sparse=False, b_is_sparse=False, name=None) コード:norm(tensor, ord='euclidean', axis=None, keep_dims=False, name=None) コード:matrix_solve(A, b, adjoint=None, name=None) コード:qr(input, full_matrices=None, name=None) コード:svd(tensor, full_matrices=False, compute_uv=True, name=None) コード:unitary matrix einsum(equation, *inputs) |