Intro to TensorFlow for Deep Learning | Udacityをぼんやりと眺める。
勾配降下法の最適化アルゴリズムの備忘録 - Qiita
勾配降下法の凄いやつ、くらいに思っとこ。最近はアニメーションで見られて凄い。
ノートにドーナツ描いたりしてた時代は何だったんだろうという勢いで・・・。
まぁ、ともかく最小二乗法ベースの損失関数 $J(w) = \frac{1}{2}\sum (y^{(i)} - \hat{y}^{(i)})^2$ を作っておいて、すっごい勾配降下法で $w$ の最適値を求めますよってことだな。ゼロから作るDeep Learningのp.87〜のとことか[第2版]Python 機械学習プログラミングの10.3.1の内容とかCourseraのアレとかを念頭におかないとなんじゃコレ?という気持ちに・・・
epochs
とは?と思ってしまうが、勾配降下法ではぐるぐるイテレーションを回すのだったから、収束するまである程度くるくる回しておけと・・・。
以下、写経: (なんとなくそっかーという気分がするものの、唐突に登場するkerasなど、どうにもハードルが・・・)
from __future__ import absolute_import, division, print_function, unicode_literals import tensorflow as tf import numpy as np # ログをエラーだけに import logging logger = tf.get_logger() logger.setLevel(logging.ERROR) # トレーニングデータ作成 celsius_q = np.array([-40, -10, 0, 8, 15, 22, 38], dtype=float) fahrenheit_a = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float) # モデル作成 ## 層の構築 l0 = tf.keras.layers.Dense(units=1, input_shape=[1]) ## 層のモデルへの組み込み model = tf.keras.Sequential([l0]) ## モデルのコンパイル model.compile(loss='mean_squared_error', optimizer=tf.keras.optimizers.Adam(0.1)) # モデルの訓練 history = model.fit(celsius_q, fahrenheit_a, epochs=500, verbose=False) # 訓練済みモデルを使った予測 model.predict([100.0]) # 層の重みパラメータの確認 print("These are the layer variables: {}".format(l0.get_weights()))
オマケで層の数を増やして複雑にしたモデルのサンプルがある。とっとは精度が上がるが、複雑にしたことで変換ロジックのシンプルな構造(特に直接的な係数)が隠れちゃいましたよと。
上記が一番簡単なTensorflowのサンプルだと信じたい・・・。placeholder
とかVariable
とかSession
とかから入ると何が何やら・・・。
・・・なんかそれっぽい結果は得られているが、ポチポチしているだけで全然見えてこない。
脳死で覚えるkeras入門 - Qiitaを読んでみる・・・。うーん。Courseraのアレのお手製感から、このライブラリ感までのギャップがひどい・・・。ヴィジュアル的に溝が埋まらない・・・。
組み立てたモデル?を視覚化できるともうちょっとわかりそうな気もするが・・・。
きっとTensorBoardってやつがそれかな・・・。
YouTubeから画像を持ってくると、以下のようなモデルの視覚化がしたいわけだ: