Как контролировать многословие в TensorFlow 2.0 - PullRequest
2 голосов
/ 14 марта 2019

В TensorFlow 1.x у меня была большая свобода выбора, как и когда печатать оценки точности / потерь во время тренировки. Например, если бы я хотел печатать потери тренировок каждые 100 эпох, в tf.Session() я бы написал:

if epoch % 100 == 0:
    print(str(epoch) + '. Training Loss: ' + str(loss))

После выхода TF 2.0 (альфа) кажется, что Keras API заставляет придерживаться своего стандартного вывода. Есть ли способ вернуть эту гибкость обратно?

1 Ответ

3 голосов
/ 14 марта 2019

Если вы не используете методы модели Keras (.fit, .train_on_batch, ...), и вы пишете свой собственный цикл обучения, используя нетерпеливое выполнение (и, необязательно, заключая его в tf.function, чтобы преобразовать его вего графическое представление) вы можете контролировать многословие, как вы привыкли делать в 1.x

training_epochs = 10
step = 0
for epoch in range(training_epochs)
    print("starting ",epoch)
    for features, labels in dataset:
        with tf.GradientTape() as tape:
            loss = compute_loss(model(features),labels)
        gradients = tape.gradients(loss, model.trainable_variables)
        optimizer.apply_gradients(zip(gradients, model.trainable_variables))
        step += 1
        if step % 10 == 0:
            # measure other metrics if needed
            print("loss: ", loss)
    print("Epoch ", epoch, " finished.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...