Задача:
В этом блокноте мы будем классифицировать погоду по изображению (солнечно или облачно).
Предварительная обработка -
- Во-первых, импортируйте все необходимые библиотеки -
- Загрузите данные и разархивируйте их, чтобы получить доступ к изображениям и этикеткам из вашей записной книжки.
Перечислите все имена папок в вашем наборе данных и проверьте количество классификаций, которые нужно сделать:
Выход:
{'cloudy': 0, 'sunny': 1}
Чтобы лучше понять наш набор данных, отобразите несколько изображений:
Выход:
Разделите набор обучающих данных на обучающий и проверочный наборы.
- Выполните увеличение данных с помощью ImageDataGenerator, чтобы мы могли получать более релевантные данные из существующих изображений, внеся незначительные изменения в набор данных.
- Разделите набор данных для обучения на набор для обучения и набор для проверки.
Выход:
Found 8002 images belonging to 2 classes. Found 2000 images belonging to 2 classes.
Обучение модели:
Выход:
Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d_6 (Conv2D) (None, 100, 100, 32) 896 _________________________________________________________________ max_pooling2d_6 (MaxPooling2 (None, 50, 50, 32) 0 _________________________________________________________________ conv2d_7 (Conv2D) (None, 50, 50, 64) 18496 _________________________________________________________________ max_pooling2d_7 (MaxPooling2 (None, 25, 25, 64) 0 _________________________________________________________________ conv2d_8 (Conv2D) (None, 25, 25, 64) 36928 _________________________________________________________________ max_pooling2d_8 (MaxPooling2 (None, 12, 12, 64) 0 _________________________________________________________________ conv2d_9 (Conv2D) (None, 12, 12, 64) 36928 _________________________________________________________________ max_pooling2d_9 (MaxPooling2 (None, 6, 6, 64) 0 _________________________________________________________________ conv2d_10 (Conv2D) (None, 6, 6, 64) 36928 _________________________________________________________________ max_pooling2d_10 (MaxPooling (None, 3, 3, 64) 0 _________________________________________________________________ dropout_2 (Dropout) (None, 3, 3, 64) 0 _________________________________________________________________ conv2d_11 (Conv2D) (None, 3, 3, 64) 36928 _________________________________________________________________ max_pooling2d_11 (MaxPooling (None, 1, 1, 64) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 64) 0 _________________________________________________________________ dense_2 (Dense) (None, 256) 16640 _________________________________________________________________ activation_2 (Activation) (None, 256) 0 _________________________________________________________________ dropout_3 (Dropout) (None, 256) 0 _________________________________________________________________ dense_3 (Dense) (None, 2) 514 _________________________________________________________________ activation_3 (Activation) (None, 2) 0 ================================================================= Total params: 184,258 Trainable params: 184,258 Non-trainable params: 0 _________________________________________________________________
Скомпилируйте и подгоните модель:
Выход:
Epoch 1/5 251/251 [==============================] - 223s 888ms/step - loss: 0.5630 - accuracy: 0.6788 - val_loss: 0.3896 - val_accuracy: 0.8215 Epoch 2/5 251/251 [==============================] - 219s 871ms/step - loss: 0.4006 - accuracy: 0.8173 - val_loss: 0.3339 - val_accuracy: 0.8570 Epoch 3/5 251/251 [==============================] - 218s 869ms/step - loss: 0.3747 - accuracy: 0.8324 - val_loss: 0.3313 - val_accuracy: 0.8480 Epoch 4/5 251/251 [==============================] - 219s 871ms/step - loss: 0.3440 - accuracy: 0.8427 - val_loss: 0.3518 - val_accuracy: 0.8480 Epoch 5/5 251/251 [==============================] - 219s 871ms/step - loss: 0.3219 - accuracy: 0.8603 - val_loss: 0.2542 - val_accuracy: 0.8910
Производительность модели:
Выход:
Делаем прогнозы:
Случайным образом выберите изображение из тестового набора и передайте его нашей модели, чтобы делать прогнозы.
Выход:
Prediction is sunny.