时间:2021-05-22
已经有了一个预训练的模型,我需要从其中取出某一层,把该层的weights和biases赋值到新的网络结构中,可以使用tensorflow中的pywrap_tensorflow(用来读取预训练模型的参数值)结合Session.assign()进行操作。
这种需求即预训练模型可能为单分支网络,当前网络为多分支,我需要把单分支A复用到到多个分支去(B,C,D)。
先导入对应的工具包
from tensorflow.python import pywrap_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"for v in trainable_variables: if restore_v_target_name == v.name: # 回复weights和biases sess.run( tf.assign(v, reader.get_tensor(restore_v_source_name + "/weights"))) if "weights" in v.name else sess.run( tf.assign(v, reader.get_tensor(restore_v_source_name + "/biases")))以上这篇tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
numpy.random.shuffle在做将caffe模型和预训练的参数转化为tensorflow的模型和预训练的参数,以便微调,遇到如下函数:defgen_
之前在用预训练的ResNet的模型进行迁移训练时,是固定除最后一层的前面层权重,然后把全连接层输出改为自己需要的数目,进行最后一层的训练,那么现在假如想要只是把
1、有了已经训练好的模型参数,对这个模型的某些层做了改变,如何利用这些训练好的模型参数继续训练:pretrained_params=torch.load('Pr
问题:训练好的网络模型想知道中间某一层的权重或者看看中间某一层的特征,如何处理呢?1、获取某一层权重,并保存到excel中;以resnet18为例说明:
在深度学习中,迁移学习经常被使用,在大数据集上预训练的模型迁移到特定的任务,往往需要保持模型参数不变,而微调与任务相关的模型层。本文主要介绍,使用tensorf