keras两种模型保存

keras中保存的模型有两种类型:

model.save(“文件名.h5”) 和 model.save_weight(“文件名.h5”)

1、 带有网络结构的这种的,好处是吧整个网络框架全部网络在一块了,连根拔起方便快捷。通过(model.save)保存。将h5转换成pb模型或其他转换模型时,转换依据是根据整个网络结构和权重,所以此时必须要完整保存。
后缀名可以是,h5或hdf5。

其对应的加载模型方式为load

model = load_model('model.hdf5')

由save()保存下来的h5文件才可以直接通过load_model()打开

2、没有网络结构的纯权重文件,这种的功能是可以将权重使用到不同的模型中方便迁移学习使用。通过(model.save_weights)保存。它的好处是文件较小。
如果是这种情况,你通过网络层名称去找权重参数是找不到的,因为你压根就没有存储网络结构,固然是失败的。 加载它必须首先定义一摸一样网络结构,然后将权重导入。

 # 先建立模型
model = Sequential()
model.add(Conv2D(32, 3, activation='relu', input_shape=(150,150,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
# 之后再导入权重
classifier = model.load_weights('model_weights.h5')

在这之后classifier就和load_model()导入的模型一样了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值