from datetime import datetime
print(f'Päivitetty {datetime.now()}')
Päivitetty 2022-10-22 12:30:01.202762
Konvoluutioverkot (convnets) ovat suosituin malli konenäössä. Seuraavassa konvoluutioverkko opetetaan tunnistamaan käsinkirjoitettuja numeroita.
Kannattaa katsoa https://www.youtube.com/watch?v=zfiSAzpy9NM&list=PLeo1K3hjS3us_ELKYSj_Fth2tIEkdKXvV&index=95
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
inputs = keras.Input(shape=(28, 28, 1))
x = layers.Conv2D(filters=32, kernel_size=3, activation="relu")(inputs)
x = layers.MaxPooling2D(pool_size=2)(x)
x = layers.Conv2D(filters=64, kernel_size=3, activation="relu")(x)
x = layers.MaxPooling2D(pool_size=2)(x)
x = layers.Conv2D(filters=128, kernel_size=3, activation="relu")(x)
x = layers.Flatten()(x)
outputs = layers.Dense(10, activation="softmax")(x)
malli = keras.Model(inputs=inputs, outputs=outputs)
malli.compile(optimizer="rmsprop",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype("float32") / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype("float32") / 255
malli.fit(train_images, train_labels, epochs=5, batch_size=64)
Epoch 1/5 938/938 [==============================] - 45s 47ms/step - loss: 0.1598 - accuracy: 0.9507 Epoch 2/5 938/938 [==============================] - 43s 45ms/step - loss: 0.0440 - accuracy: 0.9864 Epoch 3/5 938/938 [==============================] - 43s 46ms/step - loss: 0.0308 - accuracy: 0.9901 Epoch 4/5 938/938 [==============================] - 43s 46ms/step - loss: 0.0233 - accuracy: 0.9926 Epoch 5/5 938/938 [==============================] - 43s 46ms/step - loss: 0.0182 - accuracy: 0.9942
<keras.callbacks.History at 0x22ccd5f10c0>
test_loss, test_acc = malli.evaluate(test_images, test_labels)
print(f"Test accuracy: {test_acc:.3f}")
313/313 [==============================] - 3s 9ms/step - loss: 0.0289 - accuracy: 0.9906 Test accuracy: 0.991