ここまでの経過:
$ 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層構造でつくる:
- keras.layers.Flatten 層
この層は、画像を(28×28ピクセルの)2次元配列から、28×28=784ピクセルの、1次元配列に変換する。
(「画像の中に積まれているピクセルの行を取り崩し、横に並べる」)
- keras.layers.Dense (relu) 層
- keras.layers.Dropout 層
- keras.layers.Dense 層
>>> 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'])
>>>
|