如何可视化Keras模型已训练权重并查看异常权重值?
查看Keras模型可训练权重的异常值(TensorFlow后端)
嘿,我来帮你搞定这个查看权重值、统计异常值的问题!基于你用的是TensorFlow后端的Keras,运行在Docker的Jupyter Notebook里,我给你整理了一步步的实现方法:
步骤1:获取权重的数值数组
model.trainable_weights返回的是TensorFlow的变量对象,我们需要把它转换成numpy数组才能查看具体数值。这里兼容TensorFlow 1.x和2.x版本:
import numpy as np import keras.backend as K # 遍历所有可训练权重 for weight in model.trainable_weights: # 获取权重的名称,方便对应到具体层 weight_name = weight.name # 转换为numpy数组(TF2.x用numpy(),TF1.x用eval()) if hasattr(weight, 'numpy'): weight_values = weight.numpy() else: # TF1.x需要会话来求值 weight_values = weight.eval(session=K.get_session()) print(f"\n=== 当前权重: {weight_name} ===") print(f"权重形状: {weight_values.shape}")
步骤2:统计0、1、无穷大等异常值
接下来我们可以写一个简单的函数,统计每个权重里的异常值数量和占比,这样能快速看出有没有大量异常值块:
def count_weight_abnormalities(arr): """统计数组中的0、1、无穷大、负无穷大、NaN的数量和占比""" total_elements = arr.size counts = { '零值数量': np.sum(arr == 0), '壹值数量': np.sum(arr == 1), '正无穷数量': np.sum(np.isinf(arr)), '负无穷数量': np.sum(np.isneginf(arr)), 'NaN数量': np.sum(np.isnan(arr)) } # 计算占比 for key in counts.copy(): counts[f"{key}(占比)"] = f"{(counts[key] / total_elements) * 100:.2f}%" return counts # 把统计整合到遍历里 for weight in model.trainable_weights: weight_name = weight.name if hasattr(weight, 'numpy'): weight_values = weight.numpy() else: weight_values = weight.eval(session=K.get_session()) print(f"\n=== 权重: {weight_name} ===") print(f"形状: {weight_values.shape}") # 打印统计信息 stats = count_weight_abnormalities(weight_values) print("异常值统计:") for desc, value in stats.items(): print(f" {desc}: {value}") # 可选:打印权重的基础统计信息(均值、标准差等),辅助判断 print("\n基础统计:") print(f" 均值: {np.mean(weight_values):.4f}") print(f" 标准差: {np.std(weight_values):.4f}") print(f" 最小值: {np.min(weight_values):.4f}") print(f" 最大值: {np.max(weight_values):.4f}")
额外小技巧
如果某个权重的形状特别大(比如卷积层的kernel),你可以直接查看部分数值来确认是否有异常块,比如:
# 查看conv2d_1的kernel前3x3的部分 conv1_kernel = [w for w in model.trainable_weights if 'conv2d_1/kernel' in w.name][0].numpy() print("conv2d_1 kernel的前3x3切片:") print(conv1_kernel[:3, :3, :, :])
这样你就能清晰地看到每个可训练权重的具体数值,以及是否存在大量0、1或其他异常值啦!
内容的提问来源于stack exchange,提问作者grabbag
相关产品推荐
相关产品推荐

