Day43打卡(补41+42) @浙大疏锦行
DAY 41 简单CNN
知识回顾
- 数据增强
- 卷积神经网络定义的写法
- batch归一化:调整一个批次的分布,常用与图像数据
- 特征图:只有卷积操作输出的才叫特征图
- 调度器:直接修改基础学习率
卷积操作常见流程如下:
1. 输入 → 卷积层 → Batch归一化层(可选) → 池化层 → 激活函数 → 下一层
- Flatten -> Dense (with Dropout,可选) -> Dense (Output)
DAY 42 Grad-CAM与Hook函数
知识点回顾
- 回调函数
- lambda函数
- hook函数的模块钩子和张量钩子
- Grad-CAM的示例
DAY 43 复习日
import numpy as np
import cv2
import tensorflow as tfdef make_gradcam_heatmap(model, img_array, last_conv_layer_name='conv2d_1'):grad_model = tf.keras.models.Model([model.inputs], [model.get_layer(last_conv_layer_name).output, model.output])with tf.GradientTape() as tape:conv_outputs, predictions = grad_model(img_array)loss = predictions[:, np.argmax(predictions[0])]grads = tape.gradient(loss, conv_outputs)pooled_grads = tf.reduce_mean(grads, axis=(0, 1, 2))conv_outputs = conv_outputs[0]heatmap = conv_outputs @ pooled_grads[..., tf.newaxis]heatmap = tf.squeeze(heatmap)heatmap = tf.maximum(heatmap, 0) / tf.math.reduce_max(heatmap)return heatmap.numpy()def overlay_heatmap(img, heatmap, alpha=0.4):heatmap = cv2.resize(heatmap, (img.shape[1], img.shape[0]))heatmap = np.uint8(255 * heatmap)heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)superimposed_img = heatmap * alpha + imgreturn superimposed_img
@浙大疏锦行