python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...

介绍

本博文中的代码,实现的是加载训练好的模型model_halcon_resenet.h5,并把该模型的参数赋值给两个不同的新的model。

函数式模型

官网上给出的调用一个训练好模型,并输出任意层的feature。

model = Model(inputs=base_model.input, outputs=base_model.get_layer(‘block4_pool').output)

但是这有一个问题,就是新的model,如果输入inputs和训练好的model的inputs大小不同呢?比如我想建立一个输入是600x600x3的新model,但是训练好的model输入是200x200x3,而这时我又想调用训练好模型的卷积核参数,这时该怎么办呢?

其实想一下,用训练好的模型参数,即使输入的尺寸不同,但是这些模型参数仍然可以处理计算,只是输出的feature map大小不同。那到底怎么赋值呢?其实很简单

在定义新的model时,新的model层在定义时,需要加上名字,而这个名字就是训练好的模型的每层名字。如下代码所示:

inputs=Input(shape=(400,500,3))

X=Conv2D(32, (3, 3),name=“conv2d_1”)(inputs)

X=BatchNormalization(name=“batch_normalization_1”)(X)

X=Activation(‘relu',name=“activation_1”)(X)

最后通过以下代码即可建立一个新的模型并拥有训练好模型的参数:

model=Model(inputs=inputs, outputs=X)

model.load_weights(‘model_halcon_resenet.h5', by_name=True)

源代码

from keras.models import load_model

from keras.preprocessing import image

from keras.applications.vgg19 import preprocess_input

from keras.models import Model

import numpy as np

from keras.layers import Conv2D, MaxPooling2D,merge

from keras.layers import BatchNormalization,Activation

from keras.layers import Input, Dense

from PIL import Image

import numpy as np

import keras

from keras.models import Sequential

from keras.layers import Dense, Dropout, Flatten,Input

from keras.layers import Conv2D, MaxPooling2D,merge,AveragePooling2D,GlobalAveragePooling2D

from keras.layers import BatchNormalization,Activation

from sklearn.model_selection import train_test_split

from keras.applications.densenet import DenseNet169, DenseNet121

from keras.applications.inception_resnet_v2 import InceptionResNetV2

from keras.applications.inception_v3 import InceptionV3

from keras.optimizers import SGD

from keras import regularizers

from keras.models import Model

import tensorflow as tf

from PIL import Image

fro

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值