示意图:上面一行是自编码器,输入图经可学习的编码器压成一个不可读的潜向量,再由可学习的解码器还原成重建图。下面一行是代码自编码,目标图经优化求解拟合出一段可读、可执行的代码,再由固定的渲染器执行这段代码,画回重建图。三处不同:编码靠优化求解而不是学习,中间表示是代码而不是向量,解码器是固定的渲染器而不是可学习的网络。 Diagram. Top lane, an autoencoder: an input image goes through a learned encoder into an unreadable latent vector, and a learned decoder turns it back into a reconstruction. Bottom lane, code autoencoding: code is fitted to the target image by optimization, giving a readable, executable program, and a fixed renderer executes that code to draw the reconstruction. Three differences: the encoder is solved rather than learned, the intermediate is code rather than a vector, and the decoder is a fixed renderer rather than a learned network.

自编码器Autoencoder
输入图Input image
编码器Encoder 可学习learned
潜表示Latent一个向量,不可读a vector, not readable
解码器Decoder 可学习learned
重建图Reconstruction
同样输入一张图same input
编码Encode学出来 → 解出来learned → solved
中间表示Middle向量 → 代码vector → code
解码Decode可学习 → 固定learned → fixed
同样画回原图same goal
代码自编码Code autoencoding
目标图:夜色中的湖与红色的桥 / Target: a night lake with a red bridge
目标图Target
代码拟合Code fitting 优化求解solved by optimization
代码Code可读、可执行readable and executable
执行代码Execute the code 固定渲染器fixed renderer
重建图:执行代码画回的同一幅夜景 / Reconstruction: the same night scene, drawn by executing the code
重建图Reconstruction