Рисунок 1 – 15 экземпляров часов
Рисунок 2 – 6 импульсов тиков одного экземпляра часов во временном представлении
Рисунок 3 – зависимость мел от частоты
Рисунок 4 – 15 импульсов тиков одного экземпляра часов в частотном представлении
Рисунок 5 – 15 импульсов тиков по одному для каждого из 15 экземпляров часов в частотном представлении
Верхний ряд – спектрограммы 8 класса, нижний ряд – спектрограммы 9 класса.
Рисунок 6 – спектрограммы тиков двух классов
Рисунок 7 – спектрограммы 12 класса
# Функция для загрузки данных с использованием генератора
def load_dataset(data_dir, subset):
# Возвращает генератор данных, который будет использоваться для загрузки изображений
return tf.keras.preprocessing.image_dataset_from_directory(
data_dir, # Путь к директории с набором данных
validation_split=0.2, # Определяет процент данных, который будет использован для
# валидации
subset=subset, # Указание какой подмножество данных генерировать (обучение или
# валидация/тест)
seed=123, # Инициализация генератора случайных чисел для последовательности
image_size=(img_height, img_width), # Установка размера изображений
batch_size=batch_size # Установка размера батча
)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ input_layer (InputLayer) │ (None, 224, 224, 3) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ cast_to_float32 (CastToFloat32) │ (None, 224, 224, 3) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ normalization (Normalization) │ (None, 224, 224, 3) │ 7 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ conv2d (Conv2D) │ (None, 222, 222, 32) │ 896 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ conv2d_1 (Conv2D) │ (None, 220, 220, 64) │ 18,496 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ max_pooling2d (MaxPooling2D) │ (None, 110, 110, 64) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ dropout (Dropout) │ (None, 110, 110, 64) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ flatten (Flatten) │ (None, 774400) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ dropout_1 (Dropout) │ (None, 774400) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ dense (Dense) │ (None, 15) │ 11,616,015 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ classification_head_1 (Softmax) │ (None, 15) │ 0 │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘
Total params: 11,635,414 (44.39 MB)
Trainable params: 11,635,407 (44.39 MB)
Non-trainable params: 7 (32.00 B)
Epoch 1/5
206/206 --- 23s 96ms/step - accuracy: 0.8139 - loss: 4.5952 - val_accuracy: 1.0000 - val_loss: 1.0648e-05
Epoch 2/5
206/206 --- 18s 88ms/step - accuracy: 1.0000 - loss: 1.4746e-05 - val_accuracy: 1.0000 - val_loss: 6.7586e-06
Epoch 3/5
206/206 --- 20s 84ms/step - accuracy: 1.0000 - loss: 6.5371e-06 - val_accuracy: 1.0000 - val_loss: 2.5670e-06
Epoch 4/5
206/206 --- 18s 88ms/step - accuracy: 1.0000 - loss: 3.3535e-06 - val_accuracy: 1.0000 - val_loss: 2.0957e-06
Epoch 5/5
206/206 --- 17s 84ms/step - accuracy: 1.0000 - loss: 1.7451e-06 - val_accuracy: 1.0000 - val_loss: 1.6064e-06
56/56 ------------ 806s 14s/step - accuracy: 1.0000 - loss: 4.5530e-05
Test accuracy: 1.00
Рисунок 8 – неверное отображение матрицы ошибок
Рисунок 9 – правильное представление матрицы ошибок