I am Charmie

メモとログ

TensorFlow

TensorFlowのお勉強は「TensorFlowで学ぶディープラーニング入門

  1. Neural Networkの構成
    1. 出力データ = f(入力データ)を満たす関数fを設計するのと等価
  2. 誤差関数の定義
    1. 出力データの真値と推定値の誤差を評価するための関数
    2. Networkのパラメータの精度を表すとみなせる
  3. 学習
    1. 学習データ(真値が既知であるデータ)を使う
    2. 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: よくわからん