Я исследую Реснет с моим учителем, и мы сделали некоторые изменения. После модификации окончательная потеря - MSE, шаги обучения - 10000. Я использую AdamOptimizer
и tf.layers.batch_normalization
. Результат тренировки имеет хорошие показатели.
Но когда я тестирую, установите training=False
, производительность будет ужасной.
Я искал много возможных ситуаций.
updated_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(updated_ops):
lead_paras = optimizer.minimize(lead_loss, global_step=counter_paras)
У меня всегда есть этот код, это не ответ. И многие другие ответы не смогли решить мою проблему.
Модель такова:
inputs = conv1(inputs)
inputs = residual_block1(inputs) #some conv layer with residual
inputs = residual_block2(inputs)
inputs = tf.layers.batch_normalization(inputs=inputs,
axis=3,
momentum=0.95,
epsilon=1e-5,
center=True,
scale=True,
training=is_training)
inputs = tf.nn.relu(inputs) # the size is [batchsize, 16, 16, 32]
T1 = inputs[:, :, :, 0:16]
T2 = inputs[:, :, :, 16:32]
label1 = tf.zeros(shape=tf.shape(T1), dtype=tf.float32)
label2 = tf.ones(shape=tf.shape(T1), dtype=tf.float32)
lead_loss = tf.reduce_mean(tf.square(T1-label1))
nolead_loss = tf.reduce_mean(tf.square(T2-label2))
loss = lead_loss+nolead_loss
optimizer = tf.train.AdamOptimizer()
updated_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
with tf.control_dependencies(updated_ops):
lead_paras = optimizer.minimize(loss, global_step=counter_paras)
вот так.
результат
Я хочу T1
подход 1 и T2
подход 0. Результат обучения - это то, что мне нужно.
Я был бы очень признателен, если кто-то может помочь решить проблему.