keras冻结_Keras: 冻结参数、双卡模型迁移CPU测试

keras 新手上路,进行一个分类任务,然后遇到了load pre-train model时候,参数是否冻结训练的问题。已经被知乎大佬讨论过的 BN 层训练和测试时候 frozen 开关的问题:

github上大佬们都讨论出了解决补丁:

这里主要看的是base_model 中的 conv1、bn_conv1 和自己在base_model后加的那层bn层的weights是否更新了。

pre-train 中的conv1 和bn_conv1 参数值:

# coding=utf-8

import os

# os.environ["CUDA_VISIBLE_DEVICES"] = "1"

from src.model.resnet50 import ResNet50

from keras.models import Model

from keras.layers import Input,Dropout,Dense,Concatenate,BatchNormalization

import tensorflow as tf

from keras.callbacks import TensorBoard, ModelCheckpoint

from keras.optimizers import Adam,SGD

import keras

from keras import backend as K

input_tensor = Input((299,299, 3))

base_model = ResNet50(input_tensor=input_tensor,weights='imagenet',include_top=False,pooling='avg') # load pre-trained model and weight

# print(base_model.summary())

conv_1=base_model.get_layer('conv1')

print(base_model.get_weights()[2])

print('conv1:', conv_1)

print ('======')

bn_1=base_model.get_layer('bn_conv1')

print(base_model.get_weights()[3])

print('bn_conv1:', bn_1)

# [1.0913312 1.1138613 0.87221205 1.3775853 1.1671193 1.1966964

# 0.91123503 1.5656891 2.5536506 0.8813567 1.1953614 0.86340654

# 0.9432478 2.4865716 1.0368608 1.2843996 1.4514154 1.3008332

# 1.0089829 1.3758818 1.0634737 1.1025162 2.6344054 1.0763955

# 1.0826234 1.4103851 1.982566 0.744998 0.9306326 2.0845473

# 1.4146942 0.879981 0.8721337 0.5126429 1.2891649 0.90243804

# 0.8805454 1.864482 1.380977 1.01026 1.3941606 1.040888

# 1.2940407 0.5283866 0.9631836 2.6685867 1.1683974 1.1092062

# 0.8321394 1.0036737 1.4683139 1.5917623 0.55286855 1.2541881

# 1.5560241 1.069061 0.8508632 0.92903084 1.411313 0.9452564

# 0.8614338 0.9161029 1.0425918 1.01351 ]

# conv1:

# ======

# [ 1.4794971 -1.1218344 -1.064731 -1.8752855 1.3335849 2.0549939

# -1.1351001 -0.95681113 -2.653984 1.7911505 1.7329975 1.8168497

# 1.9906664 5.2453036 1.4868897 3.3816328 2.9044456 0.70707947

# 2.5584774 0.66531706 1.6608177 1.6287826 5.406512 -1.5626409

# 2.5113227 0.7170165 -1.8168149 -0.93483573 1.75065 -1.3620055

# 3.171459 -1.1747959 1.7847018 -0.39771003 2.3295436 -1.4068654

# 1.589747 -2.040728 2.4975235 2.8929026 3.1065266 -1.0337604

# 1.6070399 -0.41155133 1.6296418 6.3536353 1.354015 2.1449265

# -1.042398 1.5324403 -0.103476 3.6450117 0.10088198 1.2302585

# -1.3651855 1.7115566 -1.3113589 1.6611845 0.76037955 2.1647985

# 2.1632543 -1.026623 0.9389381 2.010768 ]

# bn_conv1:

进行pre-train部分参数冻结,并在此基础上训一个epoch:

# 模型定义

input_tensor = Input(shape

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值