質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

なぜ推論中に学習が書かれているのか?

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 890
退会済みユーザー

退会済みユーザー

現在、以下のサイトを見て勉強しています。 
http://www.buildinsider.net/small/booktensorflow/0203

このサイトの書き方であると、推論(inference.py)中に学習(train.py)が書かれる構成になっていると思うのですが、どうして推論と学習という別の役割をもつものを1つのファイルにまとめているのでしょうか?
(最初は、inference.pyとtrain.pyを別々に書いていたのですが、コードがかぶっているところが多く1つのファイルに含まれるんだと気づいたので)

乏しいAIの知識で申し訳ないのですが、
学習はモデル内で行われるのではないのでしょうか?
(私の解釈ではそう思っていました)
それとも、
推論はつまりはOUTPUTで、最終的にOUTPUTするものの中で学習させるのが一般的なのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

inference.pytrain.pyを分けていたのは、単に説明のためでしょう。

書籍転載:TensorFlowはじめました ― 実践!最新Googleマシンラーニング(5)
では推論グラフ(ネットワーク)の説明がされています。

ここでは、推論グラフとは何かについての説明がされておりinference.pyにて実際に推論動作させています。
しかし上記の最後に書かれているように、重みなどのパラメータが調整されていないため、意味のある結果は出ません。

そこで次の
書籍転載:TensorFlowはじめました ― 実践!最新Googleマシンラーニング(6)
にて、学習の仕組みの説明がされ、train.pyで実際に動作させています。

ちなみに次の回では、未知のデータに対しての評価(evaluate)について説明がされています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/20 11:47

    なるほど!推論中に学習の処理を書くのは一般的なのですね!むしろ分けて書くことはできないのですね!ありがとうございます。

    キャンセル

  • 2017/04/20 11:59

    一般的というか、推論グラフに適切パラメータを与えてあげれば※、学習(=パラメータの調整)は不要です。
    ※以前の学習で得られたパラメータをファイルに保存しておき読み込むなど

    キャンセル

+1

学習はモデル内で行われるのではないのでしょうか?

このページの説明を読むならそれは違うということなのだと思います。ページには「モデルそのものは推論(inference)の機能しか持ちません」とかいてありますので、まずはその通りに解釈すればいいと思います。

このサイトの説明をみると「画像の認識をさせるための方式」は以下のような流れであることが伺えると思います。

  1. 「何かの画像の集合」と「それが犬なり猫なり」のなんであるかを人間がラベルとして定める

  2. 推論に用いる特定のパラメーターを機械的に決める(人間?またはプログラム自体が?)

  3. 誤差から最適なパラメーターに近づけるためのハイパーパラメーターを人間が与える
    (誤差からどの程度最適化パラメータを変更するかの程度)

  4. 一回の推論ではパラメータとあるアルゴリズム(画像を認識するための何かのアルゴリズム)で推論させ結果を「入力画像が特定のラベルである」確からしさを表す数値として求める

  5. 推論結果とラベルの誤差を求める

  6. 誤差とハイパーパラメータなどに基づき期待するラベルに近づくようにパラメータの最適化をするための計算する(それが学習)

4.~6.を繰り返し計算すると(supervisorパラメータや入力画像セットが適切なら)入力画像が望むラベルに近づくような形でパラメーターが収束してゆくことが期待できるとのことです。それが「機械が画像を特定の物であると判別できる」ということになるのでしょう。

何かのプログラムあるいは機能の実装を把握するには「まずどんな仕組み・方式なのか」を理解した後に「その仕組みをどのように実装するか」を考えていくものです。ご質問を見ると「どんな仕組み、あるいはどんな仕様か」を把握する前にプログラムの中身をみて何かを捉えようとしているように見えます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る