TensorFlowのお勉強は「TensorFlowで学ぶディープラーニング入門」
- Neural Networkの構成
- 出力データ = f(入力データ)を満たす関数fを設計するのと等価
- 誤差関数の定義
- 出力データの真値と推定値の誤差を評価するための関数
- Networkのパラメータの精度を表すとみなせる
- 学習
- 学習データ(真値が既知であるデータ)を使う
- Networkのパラメータ推定
学習率: 学習時のパラメータ更新時における更新量の重み
- tensorflow.placeholder
- プレースホルダーを表すオブジェクト
- 具体的なデータは実行時に与えられる
- オブジェクト宣言時ではサイズ指定に[None, size]などと指定する
- sizeは任意のサイズ
- 例: [None, 5] 実行時に複数の5次元ベクトルを与える
- 例: [None, 32, 32] 実行時に複数の32x32の行列を与える
- tensorflow.train.*Optimizer
- 学習アルゴリズム
- 学習データ,誤差関数,Neural Networkの構成が与えられる
- 学習データから予測を行い,勾配ベクトルの逆方向にパラメータを修正
- tensorflow.Session
- セッションを表すオブジェクト
- 学習を行う実行環境
- セッション = TensorFlowの演算をまとめて行うためのクラス
- 新セッションを定義
- Variable(パラメータ)を初期化
- run()を呼ぶ度に学習を1ステップ行う
- run()
- 最適化の1ステップを実行
- loop内で繰り返し実行しないと最適化が収束しない
- バッチ学習する場合は,loopの度にデータを変えるように自分で設定しなければいけないのだろうか?後で確認
- 例: 精度の計算(学習データとテストデータ)
- acc_train = sess.run(accuracy, feed_dict={x: train_x, t: train_t})
- acc_test = sess.run(accuracy, feed_dict={x: test_x, t: test_t})
- 引数
- 第1引数 fetches:単一のグラフ要素,任意の(入れ子)list,tuple, dictなど.run()の返戻値はfetchesと同じshape
- 第2引数 feed_dict: dict型オブジェクト.グラフ要素を値に変換する.fetchesに含まれるplaceholderに代入される(feedされる)データ.
- 第3引数 options: よくわからん
- 第4引数 run_metadata: よくわからん