#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)
Это потеря перекрестной энтропии с течением времени. Синий — с уменьшением веса, а красный — без уменьшения веса.
Этот график представляет собой потерю веса. Опять же, синий — с, красный — без.
Как вы можете видеть, когда потеря веса добавляется к общей потере, потеря перекрестной энтропии увеличивается до некоторого значения, а затем остается неизменной. Удаление потери веса приводит к уменьшению значения перекрестной энтропии, но я почти уверен, что это переоснащение, потому что точность превышает точность исходной сети, а значения веса стремительно растут.
Как правильно добавить регуляризацию веса в этом режиме обучения с учетом квантования?
Еще одна странная вещь заключается в том, что потеря веса при затухании становится очень близкой к нулю, когда добавляется к общей потере.