」を実装していきました。」を実装し、完成させていきたいと思います。最終的に作れるアプリケーションこの記事を読んで最終的に完成するのは、「手書きで数字を書くと、その数字を認識するというアプリ」です。今回のアプリの要である、機械学習部分と識別部分を作成していきます。イメージとしては、このような流れで作っていきます。いうファイルに実装していきます。それでは、まず、アプリを実行した後の「2機械学習を始める」の部分から考えていきたいと思います。学習部分の大枠アプリ実行時、すなわち最初に呼び出されるクラスのコンストラクタで機械学習を行い、そのネットワークをメンバ変数として保持しておきます。したがって、以下のようにコードを加筆します。いう関数がある前提で加筆します。今回は、以下のようなネットワークを作成していきます。ネットワーク構成】ここでDenseとは、全結合層を指し、Dropoutとは過学習を抑制するための手法の一つを指します。簡単に説明すると、Dropoutは訓練パターンが入力される度にランダムでニューロンを非活性にし、そのニューロンと接続しているシナプス結合は学習を行わないという手法です。することにより、学習の自由度を下げて訓練パターンへの過学習を防ぐことができます。活性化関数また、今回のネットワークで用いるReLUと呼ばれる活性化関数は、以下のような形をしており、画像識別ではよく使われます。最終層の活性化関数であるsoftmaxは、出力値の合計を1にする関数、つまり確率を出力にする関数です。Kerasで実装ひとまず、ここまでをKerasで実装してみます。1]の配列にすることを指します。この方が、機械学習では扱いやすいためです。次に、学習部分を実装していきます。その前に、どのような目的関数を使い、どのような最適化手法を使うかを明示的に設定する必要があります。今回は、最適化手法にAdamと呼ばれる学習の収束を早める手法を使い、目的関数はクロスエントロピーという関数を用いることにします。いう関数一つで学習が行えます。実装これらの実装例は以下のようになります。学習回数verbose=1)これで学習部分の実装完了です。学習過程をログとして出力するかを指定しています。0ならログなし、1ならプログレスバーを表示、2ならエポックごとにログを出力させます。あとは、これによって作られたネットワーク(model)を戻り値として返すだけです。テスト精度も表示させるようにしましょう。最後に、キャンパスに描いた手書き数字をネットワークに流してネットワークの答えを出力させるだけです。ネットワークに流す実装これらを実装してみます。Pillowで読み込み、余計な部分を切り取る。Pillowで読み込み、余計な部分を切り取る。Pillowで読み込み、余計な部分を切り取る。Pillowで読み込み、余計な部分を切り取る。社長と一杯飲みながらお話してみたい方はこちらミツオカフリーランスエンジニア様の募集はこちらにゃんこ師匠その他、お問い合わせはこちらミツオカお気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!一緒に働いてくれる仲間を募集しております!ライトコードでは、仲間を募集しております!当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。rightcodeエンジニア大募集中!私たちライトコードでは、エンジニアを募集しております。私服大歓迎のカジュアルな職場なので、お気軽にご応募ください!また、フリーエンジニアの方も募集しております。