我想实现自编码器(确切地说是堆叠卷积自编码器)
在这里,我想先预训练每一层,然后进行微调
所以我为每层的权重创建了变量
例如,第一层的 W_1 = tf.Variable(initial_value, name,trainable=True 等)
我已经预训练了第一层的 W_1
接下来我想预训练第二层的权重 (W_2)
这里我应该使用 W_1 来计算第二层的输入。
但是 W_1 是可训练的,因此如果我直接使用 W_1,则 tensorflow 可能会一并训练 W_1。
因此,我应该创建 W_1_out,它保留了 W_1 的值,但不可训练
说实话,我尝试修改了这个网站的代码
https://github.com/cmgreen210/TensorFlowDeepAutoencoder/blob/master/code/ae/autoencoder.py
在第102行,它通过以下代码创建变量
self[name_w + "_fixed"] = tf.Variable(tf.identity(self[name_w]),
name=name_w + "_fixed",
trainable=False)
然而,它调用错误是因为它使用了未初始化的值。
我应该怎么做才能复制变量但使其不可训练以预训练下一层?