tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
已经有了一个预训练的模型,我需要从其中取出某一层,把该层的weights和biases赋值到新的网络结构中,可以使用tensorflow中的pywrap_tensorflow(用来读取预训练模型的参数值)结合Session.assign()进行操作。
这种需求即预训练模型可能为单分支网络,当前网络为多分支,我需要把单分支A复用到到多个分支去(B,C,D)。
先导入对应的工具包
fromtensorflow.pythonimportpywrap_tensorflow
接下来的操作在一个tf.Session中进行
reader=pywrap_tensorflow.NewCheckpointReader(pre_train_model_path) #获取当前图可训练变量 trainable_variables=tf.trainable_variables() #需要赋值的当前网络层变量,这里只是随便起的名字。 restore_v_target_name="fc_target" #需要的预训练模型中的某层的名字 restore_v_source_name="fc_source" forvintrainable_variables: ifrestore_v_target_name==v.name: #回复weights和biases sess.run( tf.assign(v,reader.get_tensor(restore_v_source_name+"/weights")))if"weights"inv.nameelsesess.run( tf.assign(v,reader.get_tensor(restore_v_source_name+"/biases")))
以上这篇tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。