Keras/TensorFlow:查询已保存训练模型所用初始化器及配置参数
读取无源码的
model.save保存模型的初始化器、激活函数配置 你手里的模型如果是Keras/TensorFlow通过标准model.save()接口导出的(不管是.h5单文件格式还是SavedModel文件夹格式),不需要原始训练代码,直接加载后就能提取所有层的配置参数,操作步骤如下:
- 加载模型
常规内置层、内置初始化器、激活函数不需要额外依赖,直接调用加载接口即可;如果之前训练用了自定义组件,加载时把自定义对象传入custom_objects参数就行。from tensorflow import keras # 替换成你自己的模型存储路径 model = keras.models.load_model("./your_trained_model") - 遍历层读取配置
每一层的实例属性里直接存了初始化器、激活函数的实例对象,调用对象自带的get_config()方法就能拿到全部配置参数,直接跑下面的代码就能输出所有信息:for layer in model.layers: print(f"=== 层名:{layer.name} | 层类型:{layer.__class__.__name__} ===") # 读取权重(卷积核/全连接权重)初始化器配置 if hasattr(layer, "kernel_initializer"): k_init = layer.kernel_initializer print(f"权重初始化器:{k_init.__class__.__name__}") print(f"初始化器参数:{k_init.get_config()}") # 读取偏置初始化器配置 if hasattr(layer, "bias_initializer"): b_init = layer.bias_initializer print(f"偏置初始化器:{b_init.__class__.__name__}") print(f"初始化器参数:{b_init.get_config()}") # 读取激活函数配置 if hasattr(layer, "activation") and layer.activation is not None: act = layer.activation print(f"激活函数:{act.__class__.__name__}") print(f"激活函数参数:{act.get_config()}") print("\n")
如果你的模型用了嵌套结构(比如模型里包含子Sequential/Functional模型块),把上面的遍历逻辑改成递归遍历所有子层即可,属性读取的逻辑完全一致。
- 特殊情况说明
如果你手里的文件是PyTorch保存的权重文件(PyTorch本身没有model.save接口,常规是用torch.save存state_dict),仅权重文件是无法还原初始化器、激活函数配置的;但如果是保存了完整模型结构的PyTorch模型文件,加载后遍历各层属性也能读到对应配置。结合你提到的model.save保存方式,基本可以确定是Keras/TF格式模型,上面的代码可以直接用。
内容的提问来源于stack exchange,提问作者Philipp123
相关产品推荐
相关产品推荐

