首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Invertible 1x1 Conv快速解读

Invertible Conv1x1的可逆性,相当于encoder decoder share同一个可逆矩阵,这部分代码通过使用一个reverse参数来控制是原始矩阵还是逆矩阵,一个用于encoder一个用于decoder。思考一下我们之前Decoder用的upsampling(无参数,效果差,依赖UNet Skip Connection接入新信息)和deconv(有参数,独立学习,效果没有更好且浪费参数),是有优势的。OpenAI给的代码中同事出现了一个Shuffle,那个是对Channel的Permutation。Shuffle所带来的矩阵,也是旋转矩阵,参数只有C个,Invertible 1x1参数有C^2个更灵活。分组Invertible具有C^2/num_group个参数,CortexLabs的同事在研发,灵活性介于二者之间。

Affine coupling跟Pixelshuffler(superresolution中使用)互为反操作,两者16年都发了论文,https://arxiv.org/pdf/1605.08803.pdf中第五页描述了所谓CheckerBoard+Channelwise masking,而PixelShuffler从Pytorch官网https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/pixelshuffle.py可以追溯到论文https://arxiv.org/abs/1609.05158,前一篇主要是说encoder不丢东西,后一篇又是针对superresolution的decoder结构说恢复信息。都不是啥新东西。

综合1,2可以发现,我们经常用的Conv3x3降维,Deconv3x3升维,被解构了。

ActNorm很可能适合单个小问题(如人脸)而不是大问题(如imagenet11k)。BatchNorm是针对B这个方向的统计,因此B太小时训练直接挂。因为人脸的布局相对来说较为稳定,因此ActNorm是针对BHW三维统计,也不会出现图中出现gaussian mixture的情况(对Gaussian统计mean std有意义,对Gaussian Mixture统计就没什么意义了)在这种问题上,妈妈再也不怕我B=1了。进一步推演,如果要规避对Gaussian Mixture进行统计,只能用平行于图像(Segmentation的OHEM)或者平行于Channel的乘法Attention(Squeeze and Excitation)处理。

学属性集的embedding地方相当于加个有监督。跟分类互斥不一样,属性集往往不互斥。你如何保证每个属性被学习的时候都是balance的?Glow给的一份Infer的伪代码让我直接想起了Arie Ling二作的文章 https://arxiv.org/pdf/1805.03642.pdf。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G1GOFS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券