You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Keras模型指定中间层输出为NumPy数组并保存

提取Keras模型第6组Conv2D层输出并保存为文本文件

解决方案步骤

  1. 定位目标层
    原模型中第6组Conv2D层对应模型的第15个层(索引从0开始计数),可通过test_model.layers[15]直接访问该层。

  2. 创建特征提取模型
    基于训练好的test_model,构建仅输出目标层结果的新模型:

    from keras.models import Model
    
    # 输入沿用原模型输入,输出指定为第6组Conv2D层的结果
    feature_extractor = Model(inputs=test_model.input, outputs=test_model.layers[15].output)
    
  3. 获取目标层输出的NumPy数组
    使用新模型对目标输入数据(如训练集X_train或测试集X_test)做预测,得到该层的激活值数组:

    # 替换为你需要处理的输入数据
    conv6_output = feature_extractor.predict(X_train, verbose=0)
    
  4. 保存数组到文本文件
    利用numpy.savetxt将数组保存为文本文件。由于卷积层输出为高维数组,建议先展平后保存:

    import numpy as np
    
    # 展平数组并以浮点数格式保存
    np.savetxt('conv2d_layer6_output.txt', conv6_output.reshape(-1, conv6_output.shape[-1]), fmt='%.6f')
    

    若需保留原维度结构,可先存为.npy格式(存储效率更高),再按需转换为文本:

    # 保存为npy格式文件
    np.save('conv2d_layer6_output.npy', conv6_output)
    
    # 读取npy文件并转换为文本
    loaded_output = np.load('conv2d_layer6_output.npy')
    np.savetxt('conv2d_layer6_output.txt', loaded_output.reshape(-1, loaded_output.shape[-1]), fmt='%.6f')
    

注意事项

  • 原代码存在笔误:cnn_model.compile需改为test_model.compile,否则会因未定义cnn_model报错。
  • 确保输入数据形状符合channels_first格式:(样本数, 深度, 高度, 宽度),与模型初始化时的input_shape一致。

内容的提问来源于stack exchange,提问作者pro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:05:23