limitVue.js、PHP、Java、Cordova、Monacaを中心にハイブリッドアプリ開発、PWA開発など効率的なWEB、iOS、Androidアプリ開発の情報を共有します。前回の続きで、実装の説明に入ります。機械学習では入力データになんらかの変換をかけることを「前処理」と言いますが、正規化は前処理の一つです。正規化の手法は複数ありますが、ここではそれらの詳細には触れません。過学習を防ぐ正規化を行う理由にはいくつかありますが、その一つには過学習を防ぐことがあります。過学習とは訓練データにだけ適応し、未知のデータに対応できない状態のことです。機械学習などの最終的な目的は、汎用性にあるので未知のデータに対応できないというのは大きな問題です。normalizationを使っています。normalizationは最大値と最小値の範囲が決まっているときなどに使います。normalizationを使うのが最適です。normalizationの式は以下のようになります。処理前の値/255となります。処理前の値を最大値の255で割っています。それが以下のコードになります。255.0これで正規化も完了です。分類クラス次に、分類されるクラスのラベルを用意します。これは単に、訓練ラベルなどが何を表すかを決めることなのであまり説明はいらないと思います。boot']前回の記事でも書きましたが、このチュートリアルでは以下のようなクラス分けがされています。アンクルブーツモデルの作成とコンパイル続いてモデルの作成を行いましょう。モデルの作成は、ニューラルネットワークの構築に必要です。activation=tf.nn.softmax)])細かく実装を見ていきます。最初に、モデルを作成する際に使用する「SequentialモデルAPI」です。Sequentialモデルは層を積み重ねたものです。詳細は公式ドキュメントをご覧ください。layers])コンストラクタにレイヤーのインスタンスを与えることでSequentialモデルを作ります。データを再フォーマット今回の一番最初のレイヤーはフォーマットするためだけにあります。(28×28=)784ピクセルの1次元配列に変換します。layers])第1のDense層tf.keras.layers.Denseを使って層を定義します。第1のDense層では128個のノードを持つ、ReLUレイヤーです。....])活性化関数としてReLUを使っています。ReLUは入力が0以下の場合は0を返し、入力が0より大きい場合は入力値を返す関数です。今回のモデルでは最後のレイヤーになります。第2のDense層は10ノードを持つsoftmaxレイヤーです。activation=tf.nn.softmax)])活性化関数としてsoftmax関数を使っています。softmax関数の特徴として、返却される値は0〜1の数値であり、出力される値の合計は必ず1になります。今回の例で言えば、以下の分類クラスのどれに当てはまるかを表す確率を配列で返却します。アンクルブーツ例えば、ある画像を入力値として与えた場合には以下のような結果が返ってきたとします。0.00]これが表すのは、Tシャツ/トップ、ズボンである確率が1%セーターである確率が3%ドレスである確率が95%それ以外である確率は0%ということです。モデルのコンパイル続いて、モデルのコンパイルを行います。モデルのコンパイルとは、モデルの学習を始める前にどのような学習をするかを設定する作業になります。具体的には、「損失関数」と「最適化アルゴリズム」と「評価関数のリスト」を引数として設定します。metrics=['accuracy'])それぞれについては公式ドキュメントにも記載がありますが、ここでも軽く触れておきます。損失関数この損失関数を最小化するようにすることを目的とします。この損失関数の値がモデルの性能を表しており、損失関数が小さくなれば性能の高いモデルと言えます。様々な損失関数がありますが、ここでは分類問題でよく使われる「sparse_categorical_crossentropy」を使っています。Documentation最適化アルゴリズムオプティマイザと呼ばれる、最適化アルゴリズムを設定します。オプティマイザとは損失関数の値を最小化するために、パラメータを更新するための機能になります。このチュートリアルではAdamオプティマイザを使用します。Adamオプティマイザの詳細な説明はここでは省きます。Documentation評価関数のリストモデルの性能を測るために使われます。評価関数には、既存の評価関数以外にも自分で作った評価関数を使うことも可能です。ここでは「accuracy」を指定しています。Documentation長くなったので、訓練フェーズは次回にします。AIはてなブログをはじめよう!duo-taro100さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。