import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

image=tf.keras.utils.load_img('photo.jpg',target_size=(128,128),color_mode="grayscale")
image=tf.keras.utils.img_to_array(image)
image=image/255.0
image=np.expand_dims(image,axis=0)

conv=tf.keras.layers.Conv2D(8,(3,3),activation="relu",padding="same")
pool=tf.keras.layers.MaxPooling2D((2,2))
depthwise=tf.keras.layers.SeparableConv2D(8,(3,3),activation="relu",padding="same")

conv_output=conv(image)
pool_output=pool(conv_output)
depthwise_output=depthwise(pool_output)

plt.figure(figsize=(12,8))
plt.subplot(2,3,1)
plt.imshow(image[0,:,:,0],cmap="gray")
plt.title("Original Image")
plt.axis("off")
plt.subplot(2,3,2)
plt.imshow(conv_output[0,:,:,0],cmap="gray")
plt.title("Convolution")
plt.axis("off")
plt.subplot(2,3,3)
plt.imshow(pool_output[0,:,:,0],cmap="gray")
plt.title("Max Pooling")
plt.axis("off")
plt.subplot(2,3,4)
plt.imshow(depthwise_output[0,:,:,0],cmap="gray")
plt.title("Depthwise Separable")
plt.axis("off")
plt.tight_layout()
plt.show()