Я все еще новичок в tensorflow
, и я пытаюсь понять, что происходит в деталях, пока обучение моих моделей продолжается. Вкратце, я использую модели slim
, предварительно обработанные на ImageNet
, чтобы сделать finetuning
в моем наборе данных. Вот несколько графиков, извлеченных из тензора для двух отдельных моделей:
Model_1 (InceptionResnet_V2)
Model_2 (InceptionV4)
Пока обе модели имеют плохие результаты на наборах проверки (Average Az (Area под кривой ROC) = 0,7 для Model_1
и 0,79 для Model_2
). Моя интерпретация этих сюжетов заключается в том, что веса не изменяются над мини-партиями. Это только смещения, которые меняются по сравнению с мини-партиями, и это может быть проблемой. Но я не знаю, где искать, чтобы проверить этот момент. Это единственная интерпретация, о которой я могу думать, но это может быть неправильно, учитывая тот факт, что я все еще новичок. Можете ли вы, пожалуйста, поделиться со мной своими мыслями? Не стесняйтесь спрашивать больше участков в случае необходимости.
EDIT: Как вы можете видеть на рисунках ниже, кажется, что весы со временем меняются. Это применяется для всех других весов для обеих сетей. Это привело меня к мысли, что есть проблема где-то, но не знаю, как ее интерпретировать.
InceptionV4 weights
InceptionResnetV2 weights
EDIT2: Эти модели были впервые обучены на ImageNet, и эти графики являются результатом их финализации на моем наборе данных. Я использую набор данных из 19 классов с примерно 800000 изображениями в нем. Я делаю проблему с несколькими метками, и я использую sigmoid_crossentropy как функцию потери. Классы сильно неуравновешены. В приведенной ниже таблице мы показываем процент присутствия каждого класса в двух подмножествах (поезд, проверка):
Objects train validation
obj_1 3.9832 % 0.0000 %
obj_2 70.6678 % 33.3253 %
obj_3 89.9084 % 98.5371 %
obj_4 85.6781 % 81.4631 %
obj_5 92.7638 % 71.4327 %
obj_6 99.9690 % 100.0000 %
obj_7 90.5899 % 96.1605 %
obj_8 77.1223 % 91.8368 %
obj_9 94.6200 % 98.8323 %
obj_10 88.2051 % 95.0989 %
obj_11 3.8838 % 9.3670 %
obj_12 50.0131 % 24.8709 %
obj_13 0.0056 % 0.0000 %
obj_14 0.3237 % 0.0000 %
obj_15 61.3438 % 94.1573 %
obj_16 93.8729 % 98.1648 %
obj_17 93.8731 % 97.5094 %
obj_18 59.2404 % 70.1059 %
obj_19 8.5414 % 26.8762 %
Значения гиперпарамов:
batch_size=32
weight_decay = 0.00004 #'The weight decay on the model weights.'
optimizer = rmsprop
rmsprop_momentum = 0.9
rmsprop_decay = 0.9 #'Decay term for RMSProp.'
learning_rate_decay_type = exponential #Specifies how the learning rate is decayed
learning_rate = 0.01 #Initial learning rate.
learning_rate_decay_factor = 0.94 #Learning rate decay factor
num_epochs_per_decay = 2.0 #'Number of epochs after which learning rate
Что касается разреженности слоев, вот несколько примеров разреженности слоев для обеих сетей:
sparsity (InceptionResnet_V2)
sparsity (InceptionV4)
EDITED3: Вот графики потерь для обеих моделей:
Losses and regularization loss (InceptionResnet_V2)
Losses and regularization loss (InceptionV4)