Я использую вариацию сети кодер-декодер для прогнозирования высоты из изображения RGB. Поскольку пакетная нормализация дает значительный прирост производительности как в сходимости, так и в конечной точности, я решил использовать это. Однако это вызвало у меня несколько проблем. Во-первых, это высота наземной истинности, прогноз без нормализации партии и прогноз с нормализацией партии:
Из трех изображений выше видно, что результат нормализации партии неверен. Под нормализацией партии я подразумеваю, что я установил 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...
Кто-нибудь может мне помочь с этим?