TensorFlow 2+Keras(tf.keras)入門

TensorFlow 2+Keras(tf.keras)入門

デジタルアドバンテージ 一色 政彦

機械学習の勉強はここから始めてみよう。ディープラーニングの基盤技術であるニューラルネットワーク(NN)を、知識ゼロの状態から概略を押さえつつ実装。さらにCNNやRNNも同様に学ぶ。これらの実装例を通して、TensorFlow 2とKerasにも習熟する連載。

第1回 初めてのニューラルネットワーク実装、まずは準備をしよう ― 仕組み理解×初実装(前編)(2019/09/19)

  • ニューラルネットワークは難しくない
  • ディープラーニングの大まかな流れ
    1データ準備
    ・Playgroundによる図解
    ・Pythonコードでの実装例
    2問題種別
    ・Playgroundによる図解
    ・Pythonコードでの実装例
    3前処理
    ・Playgroundによる図解
    ・訓練用/精度検証用のデータ分割について
    ・ノイズについて
    ・Pythonコードでの実装例

第2回 ニューラルネットワーク最速入門 ― 仕組み理解×初実装(中編)(2019/10/17)

  • 4“手法”の選択とモデルの定義: ニューロン
    ・Playgroundによる図解
     - 入力
     - 何らかの計算結果の出力
    ・Pythonコードでの実装例
     - TensorFlow 2.0のインストール
     - tensorflowパッケージのインポート
     - Kerasにおけるモデルの書き方
     - モデルの定義
     - モデルへの入力と出力(フォワードプロパゲーション)
    4“手法”の選択とモデルの定義: ニューラルネットワーク
    ・Playgroundによる図解
     - ニューラルネットワークの基本形
     - ニューロンの数を増やす
     - レイヤー(層)の数を増やす
    ・Pythonコードでの実装例
     - モデルの定義
    4“手法”の選択とモデルの定義: 活性化関数
    ・Playgroundによる図解
     - 活性化関数
    ・Pythonコードでの実装例
    4“手法”の選択とモデルの定義: 正則化
    ・Playgroundによる図解
     - 正則化
     - 正則化率
    ・Pythonコードでの実装例

第3回 ディープラーニング最速入門 ― 仕組み理解×初実装(後編)(2019/12/16)

  • 5“学習方法” の設計とモデルの生成: 損失関数
    ・Playgroundによる図解
     - 回帰問題/分類問題でよく使われる損失関数
     - 誤差とは
     - なぜ「二乗」するか
    ・Pythonコードでの実装例
    5“学習方法” の設計とモデルの生成: 最適化
    ・Playgroundによる図解
     - 最適化とは
     - 勾配法とは
    ・【コラム】偏微分と線形代数と統計学
    ・Pythonコードでの実装例
    5“学習方法” の設計とモデルの生成: 学習率
    ・Playgroundによる図解
    ・Pythonコードでの実装例
    6学習: トレーニング
    ・Playgroundによる図解
     - バックプロパゲーション(誤差逆伝播法)
     - エポック単位でのステップ学習
    ・Pythonコードでの実装例
    6学習: バッチサイズ
    ・Playgroundによる図解
    ・Pythonコードでの実装例
    7評価: 損失のグラフ
    ・Playgroundによる図解
    ・Pythonコードでの実装例
     - 早期終了とCSVログ出力
    8テスト: 未知データで推論と評価
    ・Playgroundによる図解
    ・Pythonコードでの実装例
  • まとめ

第4回 知ってる!? TensorFlow 2.0最新の書き方入門(初中級者向け)(2020/02/27)

  • TensorFlowにおける、3種類/6通りのモデルの書き方
    ・3種類のAPI
    ・6通りのモデルの書き方
    ・TensorFlow 2.0最新の書き方入門連載(全3回)について
    ・TensorFlowのエコシステム/機能構成図
  • コードの書き方を実行するための準備
    ・前提条件
    ・データについて
    ・ディープニューラルネットワークのモデル設計
  • (1)Sequentialクラスのコンストラクター利用[tf.keras - Sequential API]
    ・重み/バイアスの初期化指定【応用】
    ・学習と推論: 書き方入門(初中級者向け)で共通
    ・作成済みモデルのリセット
  • (2)Sequentialオブジェクトのaddメソッドで追加[tf.keras - Sequential API]
  • (2)Sequentialオブジェクトのaddメソッドで追加[tf.keras - Sequential API]
  • (3)Modelクラスのコンストラクター利用[tf.keras - Functional API]
  • 次回について

第5回 お勧めの、TensorFlow 2.0最新の書き方入門(エキスパート向け)(2020/03/10)

  • ・どの書き方を採用すべきか
  • コードの書き方を実行するための準備
    ・前提条件
  • (4)Modelクラスのサブクラス化[tf.keras - Subclassing/Imperative API]
    ・モデルの内容と構成図の出力について
     - 方法1
     - 方法2
     - 方法3
    ・学習と推論: 書き方入門(エキスパート向け)
     - 初中級者向け書き方の復習
     - 推論
     - 学習について
     - オプティマイザ(最適化用オブジェクト)
     - オプティマイザ(最適化用オブジェクト)
     - 損失関数
     - 評価関数
     - tf.dataデータセット
     - 学習(1回分)
     - 勾配テープと自動微分
     - 重みの更新
     - 損失と正解率
     - 精度検証の処理について
     - @tf.functionとAutoGraph
    ・【コラム】訓練/評価モードについて
     - 学習(ループ処理)
     - 評価(メトリクス)
     - 評価(推移グラフ)
  • 次回について

第6回 カスタマイズするための、TensorFlow 2.0最新の書き方入門(2020/03/23)

  • ・今回の内容と方針について
  • コードの書き方を実行するための準備
    ・前提条件
  • (5)TensorFlow低水準APIでカスタム実装[TensorFlow Low-level API]
    ・基本パターン
    ・活性化関数のカスタム実装
    ・レイヤーのカスタム実装
    ・オプティマイザ(最適化アルゴリズム)のカスタム実装
    ・学習のカスタム実装について
    ・損失関数のカスタム実装
    ・評価関数(正解率や損失)のカスタム実装
    ・ここまでのカスタム実装の使用例
  • (6)作成済みEstimatorsの利用[tf.estimator](※非推奨)
  • 次回以降について

第7回 回帰問題をディープラーニング(基本のDNN)で解こう(2020/05/25)

  • 今回の内容と方針について
    回帰問題とは?
    ・今回、取り扱う回帰問題について
    ・今回、採用するTensorFlow 2の書き方について
    ・本稿で説明する大まかな流れ
  • (0)本ノートブックを実行するための事前準備
    ・前提条件
  • (1)データの準備
    ・バッチデータの作成について
  • (2)モデルの定義
    ・ディープニューラルネットワークのモデル設計
  • (3)学習/最適化(オプティマイザ)
  • (4)評価/精度検証
  • (5)テスト/未知データによる評価
    ・学習済みモデルによる推論結果のヒートマップ
  • 次回について

第8回 分類問題をディープラーニング(基本のDNN)で解こう(2020/06/08)

  • 今回の内容と方針について
    分類問題とは?
    ・二値分類
    ・多クラス分類
    ・二値分類と多クラス分類の出力層の比較
    ・今回、取り扱う分類問題について
    ・今回、採用するTensorFlow 2の書き方について
    ・本稿で説明する大まかな流れ
  • (0)本ノートブックを実行するための事前準備
    ・前提条件
  • ―――【多クラス分類編】―――
  • (1)データの準備
    ・MNIST系の画像データセットのフォーマットについて
    ・入力データの正規化(Normalization)
  • (2)モデルの定義
    ・ディープニューラルネットワークのモデル設計
  • (3)学習/最適化(オプティマイザ)
  • (4)評価/精度検証
  • (5)テスト/未知データによる評価
  • 実運用のイメージ
    ・次のページは……
  • ―――【二値分類編】―――
  • (6)データの準備
    ・入力データの正規化(Normalization)
  • (7)モデルの定義
    ・ディープニューラルネットワークのモデル設計
  • (8)学習/最適化(オプティマイザ)
  • (9)評価/精度検証
  • (10)推論/未知データによるテスト
  • 実運用のイメージ
  • 次回について

第9回 機械学習の評価関数(回帰/時系列予測用)を使いこなそう(2020/08/17)

  • ・時系列予測について
  • 二乗単位(MSE/MSLE)と、元の単位(MAE/RMSE/RMSLE)と、パーセント(MAPE/RMSPE)の使い分け
  • 平均絶対誤差(MAE:Mean Absolute Error)
  • 平均二乗誤差(MSE:Mean Squared Error)
    ・平均二乗誤差の平方根(RMSE:Root Mean Squared Error)
  • 平均二乗対数誤差(MSLE:Mean Squared Logarithmic Error)
    ・平均二乗対数誤差の平方根(RMSLE:Root Mean Squared Logarithmic Error)
  • 平均絶対パーセント誤差(MAPE:Mean Absolute Percentage Error)
    ・平均二乗パーセント誤差の平方根(RMSPE:Root Mean Squared Percentage Error)

第10回 機械学習の評価関数(二値分類用)の基礎を押さえよう(2020/10/27)

  • 二値分類用[基礎編](Binary classification)
    ・混同行列(Confusion Matrix)について
    ・正解率(Binary Accuracy)
    ・適合率(Precision)
    ・再現率(Recall)/感度(Sensitivity)
    ・特異度(Specificity)
    ・F値(F-measure、F-score)/F1スコア(F1-score)
    ・重み付きF値(Weighted F-measure)/Fβスコア(Fβ-score)

第11回 機械学習の評価関数(二値分類/多クラス分類用)を理解しよう(2021/03/04)

  • 二値分類用[応用編](Binary classification)
    ・LogLoss(Binary Logarithmic Loss)
    ・AUC(Area Under the ROC Curve)
    ・【コラム】Gini係数はAUCと密接に関連する評価指標
    ・PR-AUC(Area Under the Precision-Recall Curve、AUC-PR)/AP(Average Precision)
  • 多クラス分類用(Multi-class classification)
    ・正解率(Multi-class Accuracy)
    ・LogLoss(Multi-class Logarthimic Loss)
  • compile()&fit()メソッド使用時に「評価」を実行する方法

番外編1 スタンドアロンKerasとtf.kerasの違いとは? 〜 #AskTensorFlow より〜(2019/07/10)

  • Kerasに関するQ&A
    ・スタンドアロンKerasとtf.kerasは何が違うのでしょうか?
    ・スタンドアロンKerasの全機能は、tf.kerasにも含まれていますか?
    ・TensorFlow 2.0は、スタンドアロンKerasにどんな変化をもたらすのでしょうか?
    ・tf.kerasには、ベイジアン層(Baysian Layer)のサポートはありますか?
    ・tf.kerasを使って、カスタムレイヤーを作成できますか?
    ・tf.keras名前空間は、TensorFlow 2.0の将来的なリリースで削除されてしまう可能性はあるのでしょうか?
    ・tf.kerasモデルもSavedModel形式で出力できますか?

番外編2 マルチバックエンドKerasの終焉、tf.kerasに一本化(2020/05/13)

  • Keras公式サイトがtf.kerasを使っている!?
  • Kerasの歴史

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。