加载预训练
sym, arg_params, aux_params = mx.model.load_checkpoint(r"/mxnet/new_model", 0)
sym_new=get_symbol(256)
mod_new=mx.mod.Module(symbol=sym_new,context=[mx.cpu()])#,label_names=None)
data_shape_w=112
# mod_new.binded=True
mod_new.bind(for_training=False,data_shapes=[('data',(1,3,data_shape_w,data_shape_w))])
arg_params_new=dict()
aux_params_new=dict()
for key in arg_params.keys():
arg_params_new[key]=arg_params[key]
for key in aux_params.keys():
aux_params_new[key]=aux_params[key]
mod_new.set_params(arg_params_new,aux_params_new,allow_missing=False)
mod_new.save_checkpoint("im_65",0)
mod_new.set_params(arg_params_new,aux_params_new,allow_missing=False)
报错:
RuntimeError: fc1aa_beta is not presented
网络层:
fc1 = mx.sym.BatchNorm(data=conv_6_f, fix_gamma=True, eps=2e-5, momentum=bn_mom, name='fc1aa')
return fc1
新网络中有fc1aa这个层,提供的参数米有key为fc1aa的参数。
解决方法:
添加这个参数,
或者
mod_new.set_params(arg_params_new,aux_params_new,allow_missing=True)
相应的,如果报错:
ValueError: Find name "fc1_beta" that is not in the arguments
则表示,提供了"fc1_beta"这个key的参数,但是网络没有这个层。