Проведенные эксперименты:
< ol>
[*]Дополнение данных.
Код: Выделить всё
transforms.Compose([
transforms.RandomAutocontrast(p=0.5),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
- Увеличивает/уменьшает скорость обучения.
- Тренируйтесь на всех уровнях обиды, нескольких слоях и т. д. .
(Я думал, что мой набор данных большой и немного сложный, поэтому я должен тщательно обучить свою сеть, чтобы она могла изучить функции) - Увеличивает размер пакета. В настоящее время используется 32.
- Регуляризация (отказ, когда я использую, проверка улучшается, но поезд падает).
Пример изображения:
Изображение
Архитектура модели:
Код: Выделить всё
learning_rate = 0.001
early_stopping = EarlyStopping(monitor='val_accuracy', patience=10, restore_best_weights=True)
adam_optimizer = Adam(learning_rate=learning_rate)
resnet50 = ResNet50(input_shape=(256, 256, 3), weights='imagenet', include_top=False)
for layer in resnet50.layers:
layer.trainable = False
x = Flatten()(resnet50.output)
prediction = Dense(13, activation='sigmoid')(x)
model = Model(inputs=resnet50.input, outputs=prediction)
model.compile(optimizer=adam_optimizer, loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(train_dataset,epochs=100,validation_data=val_dataset,
callbacks[early_stopping])
Код: Выделить всё
Epoch 1/100
477/477 [==============================] - 48s 88ms/step - loss: 0.8895 - accuracy: 0.1362 - val_loss: 0.5471 - val_accuracy: 0.1835
Epoch 2/100
477/477 [==============================] - 39s 81ms/step - loss: 0.6483 - accuracy: 0.2059 - val_loss: 0.7141 - val_accuracy: 0.1175
Epoch 3/100
477/477 [==============================] - 39s 82ms/step - loss: 0.6154 - accuracy: 0.2471 - val_loss: 0.4956 - val_accuracy: 0.3182
Epoch 4/100
477/477 [==============================] - 39s 82ms/step - loss: 0.5840 - accuracy: 0.2784 - val_loss: 0.6674 - val_accuracy: 0.1464
Epoch 5/100
477/477 [==============================] - 39s 81ms/step - loss: 0.5519 - accuracy: 0.3058 - val_loss: 0.7490 - val_accuracy: 0.1533
Epoch 6/100
477/477 [==============================] - 39s 81ms/step - loss: 0.5033 - accuracy: 0.3369 - val_loss: 0.7575 - val_accuracy: 0.1354
Epoch 7/100
477/477 [==============================] - 39s 81ms/step - loss: 0.5321 - accuracy: 0.3396 - val_loss: 0.7116 - val_accuracy: 0.1230
Epoch 8/100
477/477 [==============================] - 39s 82ms/step - loss: 0.4538 - accuracy: 0.3678 - val_loss: 0.5930 - val_accuracy: 0.1753
Epoch 9/100
477/477 [==============================] - 39s 81ms/step - loss: 0.4576 - accuracy: 0.3766 - val_loss: 0.6753 - val_accuracy: 0.1072
Epoch 10/100
477/477 [==============================] - 39s 82ms/step - loss: 0.4989 - accuracy: 0.3758 - val_loss: 0.6825 - val_accuracy: 0.1168
Epoch 11/100
477/477 [==============================] - 39s 82ms/step - loss: 0.5037 - accuracy: 0.3859 - val_loss: 0.7811 - val_accuracy: 0.2144
Epoch 12/100
477/477 [==============================] - 39s 81ms/step - loss: 0.5155 - accuracy: 0.3881 - val_loss: 0.8082 - val_accuracy: 0.1402
Epoch 13/100
477/477 [==============================] - 39s 82ms/step - loss: 0.5550 - accuracy: 0.3884 - val_loss: 0.9528 - val_accuracy: 0.2419
Кривые графика :
График потерь и точности
Подробнее здесь: https://stackoverflow.com/questions/785 ... verfitting