如何在更改的参数和模型中恢复TensorFlow的检查点?

时间:2016-07-04 23:07:25

标签: tensorflow restore checkpoint

我在张量流中恢复模型的已保存参数。我希望我的模型的测试差异配置具有不同的层和不同的参数大小。

例如,如果我保存的某个参数是这样的: W_conv1 = weight_variable([7 , 7, 1, 64])

如果我恢复它,它的工作原理;但我希望像这样改变我的参数:  W_conv1 = weight_variable([5 , 5, 1, 64]) 要么 W_conv1 = weight_variable([5 , 5, 1, 50]) 要么 W_conv1 = weight_variable([9 , 9, 1, 80]) 或者......

现在我想在新配置中使用我保存的检查点进行恢复。如果参数的每个维度的大小发生变化,则从我保存的参数中随机初始化并提醒随机初始化。

这可能在tensorflow中这样做吗?

1 个答案:

答案 0 :(得分:0)

TensorFlow为运算符提供了获取现有变量(tf.slice)的切片,以及运算符为现有变量(tf.assign)分配值(可能是切片)。因此,您可以通过以下步骤实现您的目标:

  • 从检查点恢复旧变量
  • 创建不同形状的新变量,随机初始化
  • 将旧变量的相关切片分配给新变量

例如,如果您的旧变量的形状为[7, 7, 1, 64],而您的新变量的形状为[5, 5, 1, 64],则此处是切片旧变量并分配给新变量的配方:

# old_variable has the shape [7, 7, 1, 64]
new_variable = tf.Variable(np.random.rand(5, 5, 1, 64))
assign_new_var = tf.assign(new_variable, old_variable([:5, :5, :, :]))