Up モデルの構築 作成: 2021-04-20
更新: 2021-04-20


    ここまでの経過:
      $ source [venv のパス]/venv/bin/activate (venv) $ python >>> from tensorflow import keras >>> mnist = keras.datasets.mnist >>> (x_train, y_train), (x_test, y_test) = mnist.load_data() >>> class_names = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] >>> x_train = x_train / 255.0 >>> x_test = x_test / 255.0


    (1) 層の設定
    いまより,モデルをつぎの4層構造でつくる:
    1. keras.layers.Flatten 層
        この層は、画像を(28×28ピクセルの)2次元配列から、28×28=784ピクセルの、1次元配列に変換する。 (「画像の中に積まれているピクセルの行を取り崩し、横に並べる」)
    2. keras.layers.Dense (relu) 層
        128個のノード(ニューロン)が全結合。
    3. keras.layers.Dropout 層
    4. keras.layers.Dense 層
        10個のノード(ニューロン)が全結合。

      >>> model = keras.models.Sequential([ ... keras.layers.Flatten(input_shape=(28, 28)), ... keras.layers.Dense(128, activation='relu'), ... keras.layers.Dropout(0.2), ... keras.layers.Dense(10) ... ]) WARNING:tensorflow: From /home/pi/venv/lib/python3.7/site-packages /tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version. Instructions for updating: If using Keras pass *_constraint arguments to layers. >>>

    最終層を,合計が1になる10個の確率の配列を返す──今見ている画像が10個のクラスのそれぞれに属する確率を,10個のノードが出力する──ようにするときは,「keras.layers.Dense(10)」を「keras.layers.Dense(10, activation='softmax')」に替える (「keras.layers.Dense (softmax) 層」)。


    (2) モデルのコンパイル
    モデルのコンパイルにおいて,モデルにつぎの設定を加える:
    • 損失関数(loss function)
        訓練中のモデルが不正確であるほど大きな値となる関数。
        この関数の値を最小化することによって、訓練中のモデルを正しい方向に向かわせようとする。
    • オプティマイザ(optimizer)
        モデルが見ているデータと、損失関数の値から、どのようにモデルを更新するかを決定する。
    • メトリクス(metrics)
        訓練とテストのステップを監視するのに使用。
        ここでは,accuracy (正解率) ──画像が正しく分類された比率──を使用する。

      >>> model.compile(optimizer='adam', ... loss='sparse_categorical_crossentropy', ... metrics=['accuracy']) >>>