Поскольку в этом вопросе не указаны «эпохи», а использование обратных вызовов может представлять дополнительные вычисления, я не думаю, что это точно дублирование.
С tenorflow вы можете использовать пользовательский цикл обучения с активным исполнением.Простое руководство по созданию пользовательского цикла обучения: https://www.tensorflow.org/tutorials/eager/custom_training_walkthrough
В основном вы будете:
#transform your data in to a Dataset:
dataset = tf.data.Dataset.from_tensor_slices(
(x_train, y_train)).shuffle(some_buffer).batch(batchSize)
#the above is buggy in some versions regarding shuffling, you may need to shuffle
#again between each epoch
#create an optimizer
optimizer = tf.keras.optimizers.Adam()
#create an epoch loop:
for e in range(epochs):
#create a batch loop
for i, (x, y_true) in enumerate(dataset):
#create a tape to record actions
with tf.GradientTape() as tape:
#take the model's predictions
y_pred = model(x)
#calculate loss
loss = tf.keras.losses.binary_crossentropy(y_true, y_pred)
#calculate gradients
gradients = tape.gradient(loss, model.trainable_weights)
#apply gradients
optimizer.apply_gradients(zip(gradients, model.trainable_weights)
Вы можете использовать y_pred
var для выполнения чего угодно, включая получение numpy_pred = y_pred.numpy()
стоимость.
В учебном пособии приведены некоторые дополнительные сведения о показателях и цикле проверки.