Моя цель - обучить нейронную сеть, используя историю функции стоимости. Например,
Потери = сумма_ {k = T} ^ {20} || f_ {k} - f_ {k-1} ||
где T - текущая итерация обучения и ||. || - обычная L2-норма. Моя текущая попытка включает сохранение заполнителя для возврата затрат в основной цикл, но таким образом я не могу использовать tf.gradients из tensorflow.
Я не уверен, как реализовать это в тензорном потоке с помощью python, потому что я хочу использовать инструменты автоматического дифференцирования в тензорном потоке для обучения весов. Любое руководство приветствуется.
Спасибо
Например, простая перетасовка данных тренировки приведет к полному изменению вычисленных потерь для любого заданного одиночного входа. Как правило, это не имеет смысла, поскольку потери, связанные с одним примером, должны быть функцией того, где этот пример попадает в набор данных, если только не существует какой-либо прямой последовательной связи, которая индуцирует определенный порядок обучающего ввода, в в этом случае более подходящей была бы RNN, которая производит выходные данные с последовательными значениями. (Обратите внимание, что я не говорю об оценке градиента для пакета, а только об одном примере обучения).
Модель, над которой я работаю, представляет собой взаимосвязанную многоагентную систему, в которой только один агент получает обучающие входные данные, а остальные агенты обучаются в соответствии с изменением состояний своих соседей. Изменение состояния представлено как [f (k) - f (k-1)], а среднее значение должно нормализовать изменение. Таким образом, потери, о которых мы говорим, не зависят от вводимых данных, скажем,, а зависят от внутренних состояний модели, когда ввод данных фиксирован.
Ваш убыток основан на фиксированном или переменном количестве предыдущих шагов? Похоже, вам нужно будет реализовать это, используя tf.while_loop, чтобы перебирать различные итерации в рамках одного вызова sess.run.
Он основан на фиксированном количестве предыдущих шагов. Я проверю tf. while_loop и свяжусь с вами.






Есть ли у ваших итераций обучения последовательная связь друг с другом, как в повторяющейся сети? Если это так, вам следует явно использовать этот тип модели и оценить функцию потерь для последовательности выходных данных. Если нет, то это кажется строго хуже, чем стандартные методы оптимизации на основе импульса, которые обновляют градиенты таким образом, чтобы учитывать ранее вычисленные градиенты из предыдущих примеров. Ваш метод произвольно объединяет группы обучающих экземпляров для целей потери. Возможно, вы сможете уточнить, почему это уместно в вашей модели?