模型载入部分层:
model.load_weights('model.hdf5', by_name=True)
使用by_name参数,控制只载入name相同的层。
固定某些层的参数,使其不参与训练:
for layer in model.layers:
layer.trainable = False
# 或者使用如下方法冻结所有层
# model.trainable = False
model.layers[-1].trainable = True
model.layers[-2].trainable = True
model.layers[-3].trainable = True
model.layers[-4].trainable = True
model.layers[-5].trainable = True
查看可训练的层或者不可训练的层:
# 可训练层
for x in model.trainable_weights:
print(x.name)
print('\n')
# 不可训练层
for x in model.non_trainable_weights:
print(x.name)
print('\n')
清除内存中model相关的信息:
from keras import backend as K
K.clear_session()
这个可以避免同一模型在多次训练时出现的OOM问题或者其他异常问题。