diff --git a/labworks/LW3/report.md b/labworks/LW3/report.md index b122da5..2fcfd42 100644 --- a/labworks/LW3/report.md +++ b/labworks/LW3/report.md @@ -48,12 +48,14 @@ print('Shape of y train:', y_train.shape) print('Shape of X test:', X_test.shape) print('Shape of y test:', y_test.shape) ``` -``` Shape of X train: (60000, 28, 28) + Shape of y train: (60000,) + Shape of X test: (10000, 28, 28) + Shape of y test: (10000,) -``` + ### 4) Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения сверточной нейронной сети. Входные данные принимают значения от 0 до 1, метки цифр закодированы по принципу «one-hot encoding». Вывели размерности предобработанных обучающих и тестовых массивов данных. @@ -80,12 +82,15 @@ y_test = keras.utils.to_categorical(y_test, num_classes) print('Shape of transformed y train:', y_train.shape) print('Shape of transformed y test:', y_test.shape) ``` -``` Shape of transformed X train: (60000, 28, 28, 1) + Shape of transformed X test: (10000, 28, 28, 1) + Shape of transformed y train: (60000, 10) + Shape of transformed y test: (10000, 10) -``` + + ### 5) Реализовали модель сверточной нейронной сети и обучили ее на обучающих данных с выделением части обучающих данных в качестве валидационных. Вывели информацию об архитектуре нейронной сети. @@ -100,25 +105,17 @@ model.add(layers.Flatten()) model.add(layers.Dense(num_classes, activation="softmax")) model.summary() - +``` **Model: "sequential"** | Layer (type) | Output Shape | Param # | - |--------------------------------|---------------------|--------:| - | conv2d (Conv2D) | (None, 26, 26, 32) | 320 | - | max_pooling2d_8 (MaxPooling2D) | (None, 13, 13, 32) | 0 | - | conv2d_1 (Conv2D) | (None, 11, 11, 64) | 18,496 | - | max_pooling2d_9 (MaxPooling2D) | (None, 5, 5, 64) | 0 | - | dropout (Dropout) | (None, 5, 5, 64) | 0 | - | flatten (Flatten) | (None, 1600) | 0 | - | dense (Dense) | (None, 10) | 16,010 | **Total params:** 34,826 (136.04 KB) @@ -221,7 +218,7 @@ display = ConfusionMatrixDisplay(confusion_matrix=conf_matrix) display.plot() plt.show() ``` - +``` 313/313 ━━━━━━━━━━━━━━━━━━━━ 1s 2ms/step precision recall f1-score support @@ -253,7 +250,7 @@ plt.show() macro avg 0.99 0.99 0.99 10000 weighted avg 0.99 0.99 0.99 10000 - +``` ![picture](8.png) @@ -299,11 +296,8 @@ model_lr1.summary() **Model: "sequential_10"** | Layer (type) | Output Shape | Param # | - |------------------|-------------:|--------:| - | dense_1 (Dense) | (None, 100) | 78,500 | - | dense_2 (Dense) | (None, 10) | 1,010 | **Total params:** 79,512 (310.60 KB) @@ -364,11 +358,8 @@ Accuracy on test data: 0.944599986076355 ### Сделали выводы по результатам применения сверточной нейронной сети для распознавания изображений. | Модель | Количество настраиваемых параметров | Количество эпох обучения | Качество классификации тестовой выборки | - |----------|-------------------------------------|---------------------------|-----------------------------------------| - | Сверточная | 34 826 | 15 | accuracy:0.986 ; loss:0.044 | - | Полносвязная | 84 062 | 50 | accuracy:0.944 ; loss:0.195 | @@ -505,51 +496,28 @@ model.summary() **Model: "sequential_9"** | Layer (type) | Output Shape | Param # | - |--------------------------------------------|-------------------|---------:| - | conv2d_16 (Conv2D) | (None, 32, 32, 32) | 896 | - | batch_normalization_12 (BatchNormalization) | (None, 32, 32, 32) | 128 | - | conv2d_17 (Conv2D) | (None, 32, 32, 32) | 9,248 | - | batch_normalization_13 (BatchNormalization) | (None, 32, 32, 32) | 128 | - | max_pooling2d_10 (MaxPooling2D) | (None, 16, 16, 32) | 0 | - | dropout_10 (Dropout) | (None, 16, 16, 32) | 0 | - | conv2d_18 (Conv2D) | (None, 16, 16, 64) | 18,496 | - | batch_normalization_14 (BatchNormalization) | (None, 16, 16, 64) | 256 | - | conv2d_19 (Conv2D) | (None, 16, 16, 64) | 36,928 | - | batch_normalization_15 (BatchNormalization) | (None, 16, 16, 64) | 256 | - | max_pooling2d_11 (MaxPooling2D) | (None, 8, 8, 64) | 0 | - | dropout_11 (Dropout) | (None, 8, 8, 64) | 0 | - | conv2d_20 (Conv2D) | (None, 8, 8, 128) | 73,856 | - | batch_normalization_16 (BatchNormalization)| (None, 8, 8, 128) | 512 | - | conv2d_21 (Conv2D) | (None, 8, 8, 128) | 147,584 | - | batch_normalization_17 (BatchNormalization)| (None, 8, 8, 128) | 512 | - | max_pooling2d_12 (MaxPooling2D) | (None, 4, 4, 128) | 0 | - | dropout_12 (Dropout) | (None, 4, 4, 128) | 0 | - | flatten_4 (Flatten) | (None, 2048) | 0 | - | dense_6 (Dense) | (None, 128) | 262,272 | - | dropout_13 (Dropout) | (None, 128) | 0 | - | dense_7 (Dense) | (None, 10) | 1,290 | **Total params:** 552,362 (2.11 MB) @@ -580,9 +548,6 @@ Epoch 50/50 704/704 ━━━━━━━━━━━━━━━━━━━━ 9s 13ms/step - accuracy: 0.9183 - loss: 0.2363 - val_accuracy: 0.8370 - val_loss: 0.5748 - - - ### 5) Оценили качество обучения на тестовых данных. Вывели значение функции ошибки и значение метрики качества классификации на тестовых данных. @@ -658,7 +623,7 @@ disp.plot(ax=ax, xticks_rotation=45) # поворот подписей по X plt.tight_layout() # чтобы всё влезло plt.show() ``` - +``` 313/313 ━━━━━━━━━━━━━━━━━━━━ 2s 4ms/step precision recall f1-score support @@ -690,7 +655,7 @@ plt.show() macro avg 0.86 0.85 0.85 10000 weighted avg 0.86 0.85 0.85 10000 - +``` ![picture](2_8.png)