
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# Verificar versão instalada
print("TensorFlow version:", tf.__version__)pip install tensorflow ou trabalhe no Google Colab, que já possui o ambiente configurado.# Carregamento automático do MNIST
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# Normalização dos pixels para o intervalo [0, 1]
x_train = x_train / 255.0
x_test = x_test / 255.0
print("Treino:", x_train.shape) # (60000, 28, 28)
print("Teste: ", x_test.shape) # (10000, 28, 28)Flatten converte a imagem 28×28 em um vetor; a camada Dense com ReLU aprende representações intermediárias; o softmax final produz probabilidades para cada classe.model = keras.Sequential([
layers.Flatten(input_shape=(28, 28)), # 784 entradas
layers.Dense(128, activation='relu'), # camada oculta
layers.Dense(10, activation='softmax') # 10 classes de saída
])
model.summary() # Visualizar parâmetros totais0.001 — um bom ponto de partida para a maioria dos problemas.optimizer = keras.optimizers.Adam(
learning_rate=0.001 # ← altere aqui para experimentar
)
# Alternativas para experimentar:
# keras.optimizers.SGD(learning_rate=0.01)
# keras.optimizers.RMSprop(learning_rate=0.001)sparse_categorical_crossentropy.model.compile(
optimizer=optimizer,
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)sparse_categorical_crossentropy é adequada quando os rótulos são inteiros (0–9), sem necessidade de one-hot encoding.accuracy mede a proporção de predições corretas — métrica intuitiva e adequada para datasets balanceados como o MNIST.model.fit() executa o treinamento. O parâmetro validation_split=0.2 separa automaticamente 20% dos dados de treino para validação, permitindo monitorar overfitting em tempo real.history = model.fit(
x_train, y_train,
epochs=10, # ← número de épocas
batch_size=32, # ← tamanho do lote
validation_split=0.2
)
# Avaliar no conjunto de teste
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Acurácia no teste: {test_acc:.4f}")history retornado armazena as métricas de cada epoch — use-o para plotar as curvas de aprendizado com matplotlib.