我在张量流中恢复模型的已保存参数。我希望我的模型的测试差异配置具有不同的层和不同的参数大小。
例如,如果我保存的某个参数是这样的:
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中这样做吗?
答案 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, :, :]))