Использование регуляризации с квантованным графом в TensorFlow

#python #tensorflow

#python #tensorflow

Вопрос:

Я пытаюсь использовать обучение с учетом квантования для mobilenet_v1 моего собственного набора данных. Сначала я обучаю сеть с tf.losses.softmax_cross_entropy для вывода классификации, tf.nn.l2_loss применяемой к весам. Это работает так, как задумано, и я получаю точность около 70%, что здорово! Затем я точно настраиваю квантованный график следующим образом:

 model = get_model()
c_ent = get_cross_ent()
wd = get_weight_decay()
loss = c_ent   0.01 * wd #blue graph bellow
#loss = c_ent #red graph bellow

g = tf.get_default_graph()
tf.contrib.quantize.create_training_graph(input_graph=g,
                                      quant_delay=0)

train_step = tf.train.AdamOptimizer(lr).minimize(loss)
  

Это потеря перекрестной энтропии с течением времени. Синий — с уменьшением веса, а красный — без уменьшения веса.

Перекрестная потеря энтропии

Этот график представляет собой потерю веса. Опять же, синий — с, красный — без.

Потеря веса

Как вы можете видеть, когда потеря веса добавляется к общей потере, потеря перекрестной энтропии увеличивается до некоторого значения, а затем остается неизменной. Удаление потери веса приводит к уменьшению значения перекрестной энтропии, но я почти уверен, что это переоснащение, потому что точность превышает точность исходной сети, а значения веса стремительно растут.

Как правильно добавить регуляризацию веса в этом режиме обучения с учетом квантования?

Еще одна странная вещь заключается в том, что потеря веса при затухании становится очень близкой к нулю, когда добавляется к общей потере.