TensorFlow_Reference
TensorFlow/Keras Reference Guide
Complete reference for TensorFlow and Keras - deep learning framework.
Installation and Import
Installation
pip install tensorflow
Import
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
Building Models
Sequential API (Simple)
Description: Linear stack of layers
Use: Simple models with one input and one output
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=(input_dim,)),
layers.Dense(32, activation='relu'),
layers.Dense(1, activation='sigmoid')
])
Functional API (Flexible)
Description: More flexible, allows complex architectures
Use: Multi-input/output models, shared layers
inputs = keras.Input(shape=(input_dim,))
x = layers.Dense(64, activation='relu')(inputs)
x = layers.Dense(32, activation='relu')(x)
outputs = layers.Dense(1, activation='sigmoid')(x)
model = keras.Model(inputs=inputs, outputs=outputs)
Common Layers
layers.Dense()
Description: Fully connected layer
Syntax: layers.Dense(units, activation=None)
layers.Dense(64, activation='relu')
layers.Dense(10, activation='softmax') # For multi-class classification
layers.Dropout()
Description: Randomly drop units to prevent overfitting
Syntax: layers.Dropout(rate)
layers.Dropout(0.5) # Drop 50% of units
layers.Dropout(0.3) # Drop 30% of units
layers.BatchNormalization()
Description: Normalize layer inputs
Syntax: layers.BatchNormalization()
layers.BatchNormalization()
layers.Flatten()
Description: Flatten input to 1D
Syntax: layers.Flatten()
layers.Flatten() # Convert 2D/3D to 1D
Convolutional Layers (for Images)
layers.Conv2D()
Description: 2D convolution layer
Syntax: layers.Conv2D(filters, kernel_size, activation=None)
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))
layers.Conv2D(64, (3, 3), activation='relu')
layers.MaxPooling2D()
Description: Max pooling operation
Syntax: layers.MaxPooling2D(pool_size=(2, 2))
layers.MaxPooling2D((2, 2))
layers.AveragePooling2D()
Description: Average pooling operation
Syntax: layers.AveragePooling2D(pool_size=(2, 2))
layers.AveragePooling2D((2, 2))
Recurrent Layers (for Sequences)
layers.LSTM()
Description: Long Short-Term Memory layer
Syntax: layers.LSTM(units, return_sequences=False)
layers.LSTM(50, return_sequences=True) # Return full sequence
layers.LSTM(50) # Return only last output
layers.GRU()
Description: Gated Recurrent Unit layer
Syntax: layers.GRU(units, return_sequences=False)
layers.GRU(50, return_sequences=True)
layers.SimpleRNN()
Description: Simple recurrent layer
Syntax: layers.SimpleRNN(units)
layers.SimpleRNN(50)
Compiling Models
model.compile()
Description: Configure model for training
Syntax: model.compile(optimizer, loss, metrics)
# Binary classification
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy']
)
# Multi-class classification
model.compile(
optimizer='adam',
loss='categorical_crossentropy', # or 'sparse_categorical_crossentropy'
metrics=['accuracy']
)
# Regression
model.compile(
optimizer='adam',
loss='mse',
metrics=['mae']
)
# Custom learning rate
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=0.001),
loss='mse'
)
Training Models
model.fit()
Description: Train the model
Syntax: model.fit(x, y, epochs, batchsize, validationsplit)
# Basic training
history = model.fit(X_train, y_train, epochs=50, batch_size=32)
# With validation split
history = model.fit(
X_train, y_train,
epochs=50,
batch_size=32,
validation_split=0.2
)
# With separate validation data
history = model.fit(
X_train, y_train,
epochs=50,
batch_size=32,
validation_data=(X_val, y_val),
verbose=1
)
Callbacks
EarlyStopping
Description: Stop training when metric stops improving
Syntax: keras.callbacks.EarlyStopping(monitor, patience)
early_stop = keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=5,
restore_best_weights=True
)
model.fit(X_train, y_train, epochs=100, callbacks=[early_stop])
ModelCheckpoint
Description: Save model during training
Syntax: keras.callbacks.ModelCheckpoint(filepath, monitor, savebestonly)
checkpoint = keras.callbacks.ModelCheckpoint(
'best_model.h5',
monitor='val_loss',
save_best_only=True,
verbose=1
)
model.fit(X_train, y_train, epochs=100, callbacks=[checkpoint])
ReduceLROnPlateau
Description: Reduce learning rate when metric plateaus
Syntax: keras.callbacks.ReduceLROnPlateau(monitor, factor, patience)
reduce_lr = keras.callbacks.ReduceLROnPlateau(
monitor='val_loss',
factor=0.5,
patience=3,
min_lr=0.00001
)
model.fit(X_train, y_train, epochs=100, callbacks=[reduce_lr])
Prediction and Evaluation
model.predict()
Description: Generate predictions
Syntax: model.predict(x)
predictions = model.predict(X_test)
# For classification, get class labels
predicted_classes = (predictions > 0.5).astype(int) # Binary
predicted_classes = np.argmax(predictions, axis=1) # Multi-class
model.evaluate()
Description: Evaluate model on test data
Syntax: model.evaluate(x, y)
loss, accuracy = model.evaluate(X_test, y_test)
print(f"Test Loss: {loss}")
print(f"Test Accuracy: {accuracy}")
Model Inspection
model.summary()
Description: Print model architecture
Syntax: model.summary()
model.summary()
Get Weights
# Get all weights
weights = model.get_weights()
# Get layer weights
layer_weights = model.layers[0].get_weights()
Saving and Loading Models
Save Entire Model
# Save
model.save('my_model.h5')
model.save('my_model') # SavedModel format
# Load
loaded_model = keras.models.load_model('my_model.h5')
Save Only Weights
# Save weights
model.save_weights('model_weights.h5')
# Load weights
model.load_weights('model_weights.h5')
Data Augmentation (for Images)
ImageDataGenerator
Description: Generate batches of augmented image data
Syntax: keras.preprocessing.image.ImageDataGenerator(**kwargs)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True,
zoom_range=0.2,
fill_mode='nearest'
)
# Fit on training data
datagen.fit(X_train)
# Train with augmented data
model.fit(
datagen.flow(X_train, y_train, batch_size=32),
epochs=50
)
Common Activation Functions
# ReLU (most common for hidden layers)
layers.Dense(64, activation='relu')
# Sigmoid (binary classification output)
layers.Dense(1, activation='sigmoid')
# Softmax (multi-class classification output)
layers.Dense(10, activation='softmax')
# Tanh
layers.Dense(64, activation='tanh')
# Linear (regression output)
layers.Dense(1, activation='linear') # or activation=None
Loss Functions
# Binary classification
loss='binary_crossentropy'
# Multi-class classification (one-hot encoded)
loss='categorical_crossentropy'
# Multi-class classification (integer labels)
loss='sparse_categorical_crossentropy'
# Regression
loss='mse' # Mean Squared Error
loss='mae' # Mean Absolute Error
Optimizers
# Adam (most common)
optimizer='adam'
optimizer=keras.optimizers.Adam(learning_rate=0.001)
# SGD
optimizer='sgd'
optimizer=keras.optimizers.SGD(learning_rate=0.01, momentum=0.9)
# RMSprop
optimizer='rmsprop'
# Adagrad
optimizer='adagrad'
Example: Complete CNN for Image Classification
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# Build model
model = keras.Sequential([
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dropout(0.5),
layers.Dense(10, activation='softmax')
])
# Compile
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# Train
history = model.fit(
X_train, y_train,
epochs=10,
batch_size=32,
validation_split=0.2
)
# Evaluate
test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test accuracy: {test_acc}")
# Predict
predictions = model.predict(X_test)
Back to the Topic: Libraries & Tools