同样是保存模型,model.save()和model. save_weights ()有何区别

简介: 同样是保存模型,model.save()和model. save_weights ()有何区别

model.save()保存了模型的图结构和模型的参数,保存模型的后缀是.hdf5。


model. save_weights ()只保存了模型的参数,并没有保存模型的图结构,保存模型的后缀使用.h5。


所以使用save_weights保存的模型比使用save() 保存的模型的大小要小。同时加载模型时的方法也不同。model.save()保存了模型的图结构,直接使用load_model()方法就可加载模型然后做测试,例:


from  tensorflow.keras.models import load_model


model=load_model("my_model_.hdf5")

加载save_weights保存的模型就稍微复杂了一些,还需要再次描述模型结构信息才能加载模型。例:



def bn_prelu(x):


   x = BatchNormalization(epsilon=1e-5)(x)


   x = PReLU()(x)


   return x



def build_model(out_dims, input_shape=(norm_size, norm_size, 3)):


   inputs_dim = Input(input_shape)


   x = Conv2D(32, (3, 3), strides=(2, 2), padding='same')(inputs_dim)


   x = bn_prelu(x)


   x = Conv2D(32, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = MaxPooling2D(pool_size=(2, 2))(x)


   x = Conv2D(64, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = Conv2D(64, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = MaxPooling2D(pool_size=(2, 2))(x)


   x = Conv2D(128, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = Conv2D(128, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = MaxPooling2D(pool_size=(2, 2))(x)


   x = Conv2D(256, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = Conv2D(256, (3, 3), strides=(1, 1), padding='same')(x)


   x = bn_prelu(x)


   x = GlobalAveragePooling2D()(x)


   dp_1 = Dropout(0.5)(x)


   fc2 = Dense(out_dims)(dp_1)


   fc2 = Activation('softmax')(fc2) #此处注意,为sigmoid函数


   model = Model(inputs=inputs_dim, outputs=fc2)


   return model


model=build_model(labelnum)


model. load_weights(“my_model_.h5”);


目录
相关文章
|
机器学习/深度学习 算法 决策智能
【5分钟Paper】Pointer Network指针网络
【5分钟Paper】Pointer Network指针网络
860 0
【5分钟Paper】Pointer Network指针网络
|
10月前
|
机器学习/深度学习 计算机视觉
让模型不再忽视少数类:MixUp、CutMix、Focal Loss三种技术解决数据不平衡问题
在机器学习应用中,数据集规模有限且类别分布不均(如医学影像中正类仅占5%)常导致模型偏向多数类,虽准确率高,但少数类识别效果差。本文探讨MixUp、CutMix和Focal Loss三种技术,分别从数据增强与损失函数角度提升小规模不平衡数据集上的模型表现。
637 27
让模型不再忽视少数类:MixUp、CutMix、Focal Loss三种技术解决数据不平衡问题
|
5月前
|
机器学习/深度学习 测试技术 数据中心
九坤量化开源IQuest-Coder-V1,代码大模型进入“流式”训练时代
2026年首日,九坤创始团队成立的至知创新研究院开源IQuest-Coder-V1系列代码大模型,涵盖7B至40B参数,支持128K上下文与GQA架构,提供Base、Instruct、Thinking及Loop版本。采用创新Code-Flow训练范式,模拟代码演化全过程,提升复杂任务推理能力,在SWE-Bench、LiveCodeBench等基准领先。全阶段checkpoint开放,支持本地部署与微调,助力研究与应用落地。
1459 2
|
10月前
|
自然语言处理 负载均衡 算法
推理速度提升300%:LLaMA4-MoE的FlashAttention-2集成与量化部署方案
本文详解LLaMA4-MoE模型架构与实现全流程,涵盖语料预处理、MoE核心技术、模型搭建、训练优化及推理策略,并提供完整代码与技术文档,助你掌握大模型MoE技术原理与落地实践。
575 6
|
5月前
|
机器学习/深度学习 传感器 算法
Python | K折交叉验证的参数优化的支持向量机回归(SVR)预测及可视化算法
本教程系统讲解基于Python的SVR回归预测,涵盖数据处理、模型训练、K折交叉验证及贝叶斯、随机、网格搜索等参数优化方法,适用于多领域回归任务,附完整代码与可视化实现。
504 5
|
5月前
|
数据采集 自然语言处理 算法
重塑虚实边界:智元机器人发布首个大语言模型驱动的开源仿真平台Genie Sim 3.0
智元机器人发布全球首个大语言模型驱动的开源仿真平台Genie Sim 3.0,基于NVIDIA Isaac Sim,实现高保真数字孪生环境,支持自然语言生成万级场景,分钟级构建与泛化。平台开源上万小时真实机器人作业数据集,覆盖200+任务,构建10万+场景评估体系,推动具身智能从研发到落地的全链路创新,助力开发者零硬件部署、高效训练与评测。
585 4
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
758 2
|
NoSQL JavaScript 安全
精心操作MongoDB:删除数据库的关键步骤和重要事项
精心操作MongoDB:删除数据库的关键步骤和重要事项
1042 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习在图像识别中的应用:一个实战案例
【8月更文挑战第1天】 本文将通过一个实际案例,深入探讨深度学习在图像识别领域的应用。我们将介绍如何利用卷积神经网络(CNN)进行图像分类,并展示一个简单的代码示例。通过本文,您将了解到深度学习技术在解决实际问题中的潜力和挑战。

热门文章

最新文章