В тензорном потоке 2.0 вам не нужно беспокоиться о фазе обучения (размер партии, количество эпох и т. Д.), Потому что все можно определить в методе compile
: model.fit(X_train,Y_train,batch_size = 64,epochs = 100)
.
Но у меня естьвидел следующий стиль кода:
optimizer = tf.keras.optimizers.Adam(0.001)
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy()
@tf.function
def train_step(inputs, labels):
with tf.GradientTape() as tape:
predictions = model(inputs, training=True)
regularization_loss = tf.math.add_n(model.losses)
pred_loss = loss_fn(labels, predictions)
total_loss = pred_loss + regularization_loss
gradients = tape.gradient(total_loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
for epoch in range(NUM_EPOCHS):
for inputs, labels in train_data:
train_step(inputs, labels)
print("Finished epoch", epoch)
Таким образом, здесь вы можете наблюдать «более подробный» код, где вы вручную определяете процедуру обучения для циклов.
У меня следующий вопрос: что такоелучшая практика в Tensorflow 2.0?Я не нашел полного учебника.