Qub*_*bix 6 autoencoder tensorflow tf-slim
我使用tf.slim来实现自动编码器.我完全卷积了以下架构:
[conv, outputs = 1] => [conv, outputs = 15] => [conv, outputs = 25] =>
=> [conv_transpose, outputs = 25] => [conv_transpose, outputs = 15] =>
[conv_transpose, outputs = 1]
Run Code Online (Sandbox Code Playgroud)
它必须完全卷积,我不能汇集(更大的问题的限制).我想使用绑定的重量,所以
encoder_W_3 = decoder_W_1_Transposed
Run Code Online (Sandbox Code Playgroud)
(因此第一解码器层的权重是最后一个编码器层的权重,被转置).
如果我重复使用权重,那么tfslim允许你重复使用它们,即reuse = True,然后只提供你想要重用的层的范围名称,我得到大小问题:
ValueError: Trying to share variable cnn_block_3/weights, but specified shape (21, 11, 25, 25) and found shape (21, 11, 15, 25).
Run Code Online (Sandbox Code Playgroud)
如果您不转置先前模型的权重,这是有道理的.有没有人知道如何转换这些重量?
PS:我知道这是非常抽象和挥手,但我正在使用自定义api,在tfslim之上,所以我不能在这里发布代码示例.
有谁知道我如何转移这些权重?
换位很简单:
new_weights = tf.transpose(weights, perm=[0, 1, 3, 2])
Run Code Online (Sandbox Code Playgroud)
将交换最后两个轴。
然而,正如 @Seven 提到的,这不足以解决错误,因为权重总数发生了变化。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |