Я использую tf.estimator
API для обучения моделей.
Как я понимаю, model_fn
определяет график вычислений, который возвращает tf.estimator.EstimatorSpec
в соответствии с mode
.
В mode==tf.estimator.ModeKeys.TRAIN
можно указать train_op
, который будет вызываться на каждой обучающей итерации, что в свою очередь изменяет trainable
экземпляров tf.Variable
, чтобы оптимизировать определенную потерю.
Давайте назовем train_op optimizer
, а переменные A
и B
.
Чтобы ускорить прогнозирование и оценку, я хотел бы иметьвспомогательный необучаемый tf.Variable
Тензор C
, исключительно зависящий от уже обученных переменных.Значения этого тензора, таким образом, будут экспортируемыми.Этот Тензор не влияет на потерю тренировки.Давайте предположим, что мы хотим:
C = tf.Variable(tf.matmul(A,B))
update_op = tf.assign(C, tf.matmul(A,B))
Передача tf.group(optimizer, update_op)
как train_op
в EstimatorSpec
работает хорошо, но медленномного тренировок вниз , так как train_op
теперь обновляет C
на каждой итерации.
Поскольку C
требуется только во время оценки / прогнозирования, один вызов update_op
в концеобучения достаточно.
Можно ли назначить переменную в конце обучения a tf.estimator.Estimator
?