import numpy as np
import tensorflow as tf
from tensorflow.keras import layers, models
# Simulate video data: 10 videos, each with 5 frames of 64x64 RGB images
num_videos = 10
frames_per_video = 5
height, width, channels = 64, 64, 3
num_classes = 3
# Random video data and labels
X_video = np.random.rand(num_videos, frames_per_video, height, width, channels).astype(np.float32)
y_video = tf.keras.utils.to_categorical(np.random.randint(0, num_classes, num_videos), num_classes)
# 3D CNN model to capture temporal and spatial info
model = models.Sequential([
layers.Conv3D(16, kernel_size=(3,3,3), activation='relu', input_shape=(frames_per_video, height, width, channels)),
layers.MaxPooling3D(pool_size=(1,2,2)),
layers.Conv3D(32, kernel_size=(2,3,3), activation='relu'),
layers.MaxPooling3D(pool_size=(1,2,2)),
layers.Flatten(),
layers.Dense(64, activation='relu'),
layers.Dense(num_classes, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_video, y_video, epochs=10, batch_size=2, verbose=0)
# Evaluate model
loss, accuracy = model.evaluate(X_video, y_video, verbose=0)
print(f"Video model accuracy: {accuracy*100:.2f}%")