Разница нормализации партии между тестом и поездом - PullRequest
0 голосов
/ 11 апреля 2020

Я использую вариацию сети кодер-декодер для прогнозирования высоты из изображения RGB. Поскольку пакетная нормализация дает значительный прирост производительности как в сходимости, так и в конечной точности, я решил использовать это. Однако это вызвало у меня несколько проблем. Во-первых, это высота наземной истинности, прогноз без нормализации партии и прогноз с нормализацией партии: enter image description here

enter image description here

enter image description here

Из трех изображений выше видно, что результат нормализации партии неверен. Под нормализацией партии я подразумеваю, что я установил is_training в функции batch_normalization как true как в тесте, так и в тренировке. Вот мой код нормализации партии:

layer = tcl.conv2d(x, kernel_size=filter_size,num_outputs=num_filters,stride=stride, padding="SAME");
            layer = tf.layers.dropout(layer, rate=Config.DROPOUT_RATIO, training=Config.IS_TRAININGDO);
            if(use_batch==True):
                layer= tf.cond(Config.IS_TRAINING,
                               lambda:tf.layers.batch_normalization(layer, training=Config.IS_TRAINING, momentum=0.9,
                                                                   center=True),
                lambda:tf.layers.batch_normalization(layer, training=Config.IS_TRAINING, momentum=0.9, center=True));

            layer = activation_fn(layer);

Я использую этот слой для каждого слоя свертки, кроме первого. Кроме того, в соответствии с рекомендациями, я добавил свой оптимизатор следующим образом:

update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
        with tf.control_dependencies(update_ops):
            self.opt_op = self.optimizer.minimize(self.loss, global_step=self.global_step);

Кроме того, когда я использую нормализацию партии, мои потери и точность сильно изменяются для проверки, что, очевидно, является некорректным поведением. Ниже приводится часть потерь который показывает проблему:

[INFO]Beginning from epoch : 13
[INFO]Begin epoch 13...
Epoch loss = 0.004164848010987043    Epoch accuracy : 0.7082743048667908     LR: 0.10000000149011612 
Epoch valid loss = 0.02871352806687355   Epoch valid accuracy : 0.2622634172439575
[INFO]Begin epoch 14...
Saved checkpoint for step 14
Epoch loss = 0.004142340738326311    Epoch accuracy : 0.7078266739845276     LR: 0.10000000149011612 
Epoch valid loss = 0.0067420704290270805     Epoch valid accuracy : 0.6303762793540955
[INFO]Begin epoch 15...
Epoch loss = 0.00412597693502903     Epoch accuracy : 0.7083172798156738     LR: 0.10000000149011612 
Epoch valid loss = 0.0064912778325378895     Epoch valid accuracy : 0.7455053925514221
[INFO]Begin epoch 16...
Saved checkpoint for step 16
Epoch loss = 0.004111635498702526    Epoch accuracy : 0.7083649039268494     LR: 0.10000000149011612 
Epoch valid loss = 0.0064793857745826244     Epoch valid accuracy : 0.7365409135818481
[INFO]Begin epoch 17...
Epoch loss = 0.004102382343262434    Epoch accuracy : 0.7096151113510132     LR: 0.10000000149011612 
Epoch valid loss = 0.006458458490669727      Epoch valid accuracy : 0.733284056186676
[INFO]Begin epoch 18...
Saved checkpoint for step 18
Epoch loss = 0.004090930335223675    Epoch accuracy : 0.7097907066345215     LR: 0.10000000149011612 
Epoch valid loss = 0.006236451677978039      Epoch valid accuracy : 0.7325278520584106
[INFO]Begin epoch 19...
Epoch loss = 0.004077613819390535    Epoch accuracy : 0.7108234763145447     LR: 0.10000000149011612 
Epoch valid loss = 0.006093468517065048      Epoch valid accuracy : 0.725418210029602
[INFO]Begin epoch 20...
Saved checkpoint for step 20
Epoch loss = 0.004063303582370281    Epoch accuracy : 0.7109519839286804     LR: 0.10000000149011612 
Epoch valid loss = 0.006004702765494585      Epoch valid accuracy : 0.7189021110534668
[INFO]Begin epoch 21...
Epoch loss = 0.004057556856423616    Epoch accuracy : 0.7117270231246948     LR: 0.10000000149011612 
Epoch valid loss = 0.005783285479992628      Epoch valid accuracy : 0.7107012271881104
[INFO]Begin epoch 22...
Saved checkpoint for step 22
Epoch loss = 0.00404050387442112     Epoch accuracy : 0.7126234769821167     LR: 0.10000000149011612 
Epoch valid loss = 0.006048540119081736      Epoch valid accuracy : 0.7206583619117737
[INFO]Begin epoch 23...
Epoch loss = 0.00402985280379653     Epoch accuracy : 0.7121837139129639     LR: 0.10000000149011612 
Epoch valid loss = 0.006213940680027008      Epoch valid accuracy : 0.7203007340431213
[INFO]Begin epoch 24...
W0411 22:49:09.117518 13844 deprecation.py:323] From C:\Users\MSI\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow\python\training\saver.py:960: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.
Instructions for updating:
Use standard file APIs to delete files with this prefix.
Saved checkpoint for step 24
Epoch loss = 0.004019342362880707    Epoch accuracy : 0.7125554084777832     LR: 0.10000000149011612 
Epoch valid loss = 0.006032953504472971      Epoch valid accuracy : 0.6955280303955078
[INFO]Begin epoch 25...
Epoch loss = 0.0040020872838795185   Epoch accuracy : 0.7132459282875061     LR: 0.10000000149011612 
Epoch valid loss = 0.005923560820519924      Epoch valid accuracy : 0.7138530611991882
[INFO]Begin epoch 26...
Saved checkpoint for step 26
Epoch loss = 0.003993924707174301    Epoch accuracy : 0.7134121656417847     LR: 0.10000000149011612 
Epoch valid loss = 0.006192140281200409      Epoch valid accuracy : 0.7017802596092224
[INFO]Begin epoch 27...
Epoch loss = 0.003978888038545847    Epoch accuracy : 0.7139401435852051     LR: 0.10000000149011612 
Epoch valid loss = 0.006062270142138004      Epoch valid accuracy : 0.6586407423019409
[INFO]Begin epoch 28...
Saved checkpoint for step 28
Epoch loss = 0.003966391086578369    Epoch accuracy : 0.7143062353134155     LR: 0.10000000149011612 
Epoch valid loss = 0.006358215119689703      Epoch valid accuracy : 0.6491482853889465
[INFO]Begin epoch 29...
Epoch loss = 0.003954049665480852    Epoch accuracy : 0.7153526544570923     LR: 0.08999999612569809 
Epoch valid loss = 0.007527213543653488      Epoch valid accuracy : 0.5825175642967224
[INFO]Begin epoch 30...
Saved checkpoint for step 30
Epoch loss = 0.00391784030944109     Epoch accuracy : 0.7153152823448181     LR: 0.08999999612569809 
Epoch valid loss = 0.008906366303563118      Epoch valid accuracy : 0.41982898116111755
[INFO]Begin epoch 31...
Epoch loss = 0.0038991288747638464   Epoch accuracy : 0.715775728225708      LR: 0.08999999612569809 
Epoch valid loss = 0.007824528962373734      Epoch valid accuracy : 0.4185420572757721
[INFO]Begin epoch 32...
Saved checkpoint for step 32
Epoch loss = 0.0038861981593072414   Epoch accuracy : 0.7169149518013    LR: 0.08999999612569809 
Epoch valid loss = 0.007552553899586201      Epoch valid accuracy : 0.5045064091682434
[INFO]Begin epoch 33...
Epoch loss = 0.003875287715345621    Epoch accuracy : 0.7174350619316101     LR: 0.08999999612569809 
Epoch valid loss = 0.009237967431545258      Epoch valid accuracy : 0.23778347671031952
[INFO]Begin epoch 34...
Saved checkpoint for step 34
Epoch loss = 0.0038538577500730753   Epoch accuracy : 0.7187302708625793     LR: 0.08999999612569809 
Epoch valid loss = 0.0074583678506314754     Epoch valid accuracy : 0.36710336804389954
[INFO]Begin epoch 35...
Epoch loss = 0.0038362820632755756   Epoch accuracy : 0.7195649147033691     LR: 0.08999999612569809 
Epoch valid loss = 0.007322292309254408      Epoch valid accuracy : 0.5030580163002014
[INFO]Begin epoch 36...
Saved checkpoint for step 36
Epoch loss = 0.003824107814580202    Epoch accuracy : 0.7195209860801697     LR: 0.08999999612569809 
Epoch valid loss = 0.00725930230692029   Epoch valid accuracy : 0.4769040048122406
[INFO]Begin epoch 37...
Epoch loss = 0.003801868297159672    Epoch accuracy : 0.7207958698272705     LR: 0.08999999612569809 
Epoch valid loss = 0.006896665785461664      Epoch valid accuracy : 0.4211955666542053
[INFO]Begin epoch 38...
Saved checkpoint for step 38
Epoch loss = 0.0037812732625752687   Epoch accuracy : 0.7215217351913452     LR: 0.08999999612569809 
Epoch valid loss = 0.008954866789281368      Epoch valid accuracy : 0.25857678055763245
[INFO]Begin epoch 39...
Epoch loss = 0.003753126598894596    Epoch accuracy : 0.7230004668235779     LR: 0.08999999612569809 
Epoch valid loss = 0.014590180478990078      Epoch valid accuracy : 0.14992883801460266
[INFO]Begin epoch 40...
Saved checkpoint for step 40
Epoch loss = 0.0037403367459774017   Epoch accuracy : 0.7233527898788452     LR: 0.08999999612569809 
Epoch valid loss = 0.015766868367791176      Epoch valid accuracy : 0.13401691615581512
[INFO]Begin epoch 41...
Epoch loss = 0.0037229261361062527   Epoch accuracy : 0.7245150208473206     LR: 0.08999999612569809 
Epoch valid loss = 0.016692591831088066      Epoch valid accuracy : 0.12372201681137085
[INFO]Begin epoch 42...
Saved checkpoint for step 42
Epoch loss = 0.003701378358528018    Epoch accuracy : 0.7256338596343994     LR: 0.08999999612569809 
Epoch valid loss = 0.018343670293688774      Epoch valid accuracy : 0.1169680580496788
[INFO]Begin epoch 43...
Epoch loss = 0.003701810957863927    Epoch accuracy : 0.7267243266105652     LR: 0.08999999612569809 
Epoch valid loss = 0.023558445274829865      Epoch valid accuracy : 0.09476182609796524
[INFO]Begin epoch 44...
Saved checkpoint for step 44
Epoch loss = 0.003686788259074092    Epoch accuracy : 0.7272469997406006     LR: 0.08999999612569809 
Epoch valid loss = 0.031222444027662277      Epoch valid accuracy : 0.07603924721479416
[INFO]Begin epoch 45...
Epoch loss = 0.003659200156107545    Epoch accuracy : 0.7288439273834229     LR: 0.08999999612569809 
Epoch valid loss = 0.03527647629380226   Epoch valid accuracy : 0.06637080758810043
[INFO]Begin epoch 46...

Кто-нибудь может мне помочь с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...