Я тренирую нейронную сеть с тензорным потоком (1.12) под надзором.Я бы хотел тренироваться только на конкретных примерах.Примеры создаются на лету, вырезая подпоследовательности, поэтому я хочу выполнить подготовку в тензорном потоке.
Это моя оригинальная часть кода:
train_step, gvs = minimize_clipped(optimizer, loss,
clip_value=FLAGS.gradient_clip,
return_gvs=True)
gradients = [g for (g,v) in gvs]
gradient_norm = tf.global_norm(gradients)
tf.summary.scalar('gradients/norm', gradient_norm)
eval_losses = {'loss1': loss1,
'loss2': loss2}
Этап обучения позжевыполняется как:
batch_eval, _ = sess.run([eval_losses, train_step])
Я думал о том, чтобы вставить что-то вроде
train_step_fake = ????
eval_losses_fake = tf.zeros_like(tensor)
train_step_new = tf.cond(my_cond, train_step, train_step_fake)
eval_losses_new = tf.cond(my_cond, eval_losses, eval_losses_fake)
и затем сделать
batch_eval, _ = sess.run([eval_losses, train_step])
Однако я не уверен, как создатьfake train_step.
Кроме того, это хорошая идея в целом или есть более плавный способ сделать это?Я использую конвейер tfrecords, но никаких других высокоуровневых модулей (таких как keras, tf.estimator, готовых к выполнению и т. Д.) Не существует.
Любая помощь, безусловно, очень важна!