当前位置: 首页 > news >正文

网站建设公司模版网站建设个人兼职

网站建设公司模版,网站建设个人兼职,广告营销网站,重庆公司名称网上核名条件 PixelCNN PixelCNN 是 PixelRNN 的卷积版本#xff0c;它将图像中的像素视为一个序列#xff0c;并在看到前面的像素后预测每个像素#xff08;定义如上和左#xff0c;尽管这是任意的#xff09;。PixelRNN 是图像联合先验分布的自回归模型#xff1a; p ( x ) …条件 PixelCNN PixelCNN 是 PixelRNN 的卷积版本它将图像中的像素视为一个序列并在看到前面的像素后预测每个像素定义如上和左尽管这是任意的。PixelRNN 是图像联合先验分布的自回归模型 p ( x ) p ( x 0 ) ∏ p ( x i ∣ x 0 , ⋯ , x i − 1 ) p(x) p(x_0 ) ∏ p(x_i | x_0, \cdots,x_{i-1} ) p(x)p(x0​)∏p(xi​∣x0​,⋯,xi−1​) PixelRNN 的训练速度很慢因为循环无法并行化——即使是小图像也有数百或数千个像素这对于 RNN 来说是一个相对较长的序列。用掩码卷积替换循环使卷积滤波器仅看到上方和左侧的像素从而实现更快的训练图来自条件 PixelCNN 论文。 然而值得注意的是最初的 PixelCNN 实现产生的结果比 PixelRNN 更差。在后续论文使用 PixelCNN 解码器生成条件图像中推测结果降级的一个可能原因是 PixelCNN 中的 ReLU 激活与 LSTM 中的门控连接相比相对简单。Conditional PixelCNN 论文随后用门控激活取代了 ReLU y t a n h ( W f ∗ x ) • σ ( W g ∗ x ) y tanh (W f * x) • σ(W g * x) ytanh(Wf∗x)•σ(Wg∗x) 后续论文中提供的另一个可能的原因是堆叠掩模卷积滤波器会导致盲点无法捕获预测像素之上的所有像素论文中的图 PixelCNN 与 GAN PixelCNN 和 GAN 是目前用于生成图像的两种深度学习模型。GAN 最近受到了很多关注但在很多方面我发现它们的流行是没有根据的。 目前尚不清楚 GAN 实际上试图优化什么目标因为训练目标的最小值即愚弄鉴别器将导致生成器重新创建所有训练图像和/或生成不一定类似于自然图像的对抗性示例。这反映在训练 GAN 的众所周知的困难以及无数的对其进行正则化的技巧上。让两个网络相互对抗以产生训练信号的想法很有趣并且已经产生了许多好的论文尤其是 CycleGAN但我仍然不相信它们除了在社交媒体上发布华丽的帖子之外还有其他用途。 另一方面PixelCNN 有很好的概率基础。这使得它们不仅可以通过对分布进行采样从左到右从上到下遵循自回归定义来生成图像而且还意味着它们可以用于其他任务。例如作为预筛选网络来检测域外或对抗性示例用于检测训练集中的异常值或估计测试中的不确定性。我将在下一篇文章中详细介绍其中一些扩展。 我很想知道是否有人尝试过将 PixelCNN 和 GAN 结合起来。也许 PixelCNN 可以用作解码器的前级或最后阶段以一些更高级别的学习表示为条件以避免 GAN 的一些训练困难。 实现 我的实现使用门控块但为了快速实现我决定放弃针对盲点问题的双流解决方案将滤波器分为水平和垂直组件。有代码可用于解决 Tensorflow 中的盲点问题并且在 PyTorch 中重写它相当简单。这样掩蔽就很简单当前像素下方和右侧的所有内容在滤波器中都被清零并且在第一层中当前像素也在滤波器中设置为零。 class MaskedConv(nn.Conv2d):def __init__(self,mask_type,in_channels,out_channels,kernel_size,stride1):mask_type: A for first layer of network, B for all otherssuper(MaskedConv,self).__init__(in_channels,out_channels,kernel_size,stride,paddingkernel_size//2)assert mask_type in (A,B)mask torch.ones(1,1,kernel_size,kernel_size)mask[:,:,kernel_size//2,kernel_size//2(mask_typeB):] 0mask[:,:,kernel_size//21:] 0self.register_buffer(mask,mask)def forward(self,x):self.weight.data * self.maskreturn super(MaskedConv,self).forward(x)门控 ResNet 块的实现稍微复杂一些PixelCNN 在网络的两半之间有快捷连接就像 U-Net 一样PyTorch 允许模块的前向方法仅在输入是变量时才接受多个输入由于网络前半部分的特征图不是变量因此它们必须与其他输入前一层的特征连接起来。使用条件向量可以避免这种情况因为它是一个变量在本例中为类标签。 class GatedRes(nn.Module):def __init__(self,in_channels,out_channels,n_classes,kernel_size3,stride1,aux_channels0):super(GatedRes,self).__init__()self.conv MaskedConv(B,in_channels,2*out_channels,kernel_size,stride)self.y_embed nn.Linear(n_classes,2*out_channels)self.out_channels out_channelsif aux_channels!2*out_channels and aux_channels!0:self.aux_shortcut nn.Sequential(nn.Conv2d(aux_channels,2*out_channels,1),nn.BatchNorm2d(2*out_channels,momentum0.1))if in_channels!out_channels:self.shortcut nn.Sequential(nn.Conv2d(in_channels,out_channels,1),nn.BatchNorm2d(out_channels,momentum0.1))self.batchnorm nn.BatchNorm2d(out_channels,momentum0.1)def forward(self,x,y):# check for aux input from first half of net stacked into xif x.dim()5:x,aux torch.split(x,1,dim0)x torch.squeeze(x,0)aux torch.squeeze(x,0)else:aux Nonex1 self.conv(x)y torch.unsqueeze(torch.unsqueeze(self.y_embed(y),-1),-1)if aux is not None:if hasattr(self,aux_shortcut):aux self.aux_shortcut(aux)x1 (x1aux)/2# split for gate (note: pytorch dims are [n,c,h,w])xf,xg torch.split(x1,self.out_channels,dim1)yf,yg torch.split(y,self.out_channels,dim1)f torch.tanh(xfyf)g torch.sigmoid(xgyg)if hasattr(self,shortcut):x self.shortcut(x)return xself.batchnorm(g*f)我不确定在阅读原始论文时将批量归一化放在哪里所以我将它放在我认为有意义的地方在添加剩余连接之前。 实现这两个类后整个网络就相对容易了。PyTorch 方案将所有内容定义为 的子类nn.Module初始化所有层/操作/等。在构造函数中然后在forward方法中将它们连接在一起可能会很混乱。如果您有大量快捷连接并且想要使用任意深度的循环对模型进行编码则尤其如此。 注意为了能够保存/恢复模型您必须将图层存储在一个ModuleList而不是常规列表中。不过附加和索引此列表在其他方面是相同的。 class PixelCNN(nn.Module):def __init__(self,in_channels,n_classes,n_features,n_layers,n_bins,dropout0.5):super(PixelCNN,self).__init__()self.layers nn.ModuleList()self.n_layers n_layers# Up passself.input_batchnorm nn.BatchNorm2d(in_channels,momentum0.1)for l in range(n_layers):if l0: # start with normal convblock nn.Sequential(MaskedConv(A,in_channels1,n_features,kernel_size7),nn.BatchNorm2d(n_features,momentum0.1),nn.ReLU())else:block GatedRes(n_features, n_features, n_classes)self.layers.append(block)# Down passfor _ in range(n_layers):block GatedRes(n_features, n_features,n_classes,aux_channelsn_features)self.layers.append(block)# Last layer: project to n_bins (output is [-1, n_bins, h, w])self.layers.append(nn.Sequential(nn.Dropout2d(dropout),nn.Conv2d(n_features,n_bins,1),nn.LogSoftmax(dim1)))def forward(self,x,y):# Add channel of ones so network can tell where padding isx nn.functional.pad(x,(0,0,0,0,0,1,0,0),modeconstant,value1)# Up passfeatures []i -1for _ in range(self.n_layers):i 1if i0:x self.layers[i](x,y)else:x self.layers[i](x)features.append(x)# Down passfor _ in range(self.n_layers):i 1x self.layers[i](torch.stack((x,features.pop())),y)# Last layeri 1x self.layers[i](x)assert ilen(self.layers)-1assert len(features)0return xMNIST 实际上是黑白的因此我将标签离散为仅 4 个灰度级以便计算交叉熵损失。在自然图像上输出级别的数量显然需要更高。网络中的所有层都有 200 个特征。对于数据增强我使用了 /-5 度的随机旋转和最近邻采样。对于训练我使用 Adam学习率为 10 -4dropout 率为 0.9。 更高的特征数量比 MNIST 所需的特征数量更多和更高的 dropout 是训练时间与正则化之间的权衡。这是一个在论文中很少提及的技巧但有助于避免过度拟合——我只在一篇关于视频中动作识别训练的论文中看到过它其中由于高维度与当前数据集大小过度拟合是一个问题可用的。 我有一个 GTX1070 GPU所以我没有运行任何类型的超参数优化猜测合理的超参数并使模型工作的能力很大程度上说明了 Adam 批量归一化 dropout 的稳健性。学习率肯定可以更高但这会产生更有趣的 GIF。 结果 上面的 gif 显示了整个训练过程中每个epochs后生成的一批 50 张图像每类 5 个示例从看似随机的涂鸦到类似于实际数字的东西。这是最佳epochs的结果 这项工作的动机是看看条件 PixelCNN 是否也可以在类之间生成合理的示例。这是通过调节软标签而不是单热编码标签来完成的。 让我们尝试一下我所期望的容易混淆的数字对(1,7), (3,8), (4,9), (5,6) 生成的类间示例并不像正常示例那样真实。模型可能需要一些额外的训练信号例如来自分类器网络的教师强制才能沿着图像流形进行插值。这有点令人失望因为我曾希望生成类间示例可能允许使用学习的混合形式而不是平均图像。显然进一步测试这个想法将需要更多的 GPU 来生成批量输入所以无论如何它目前超出了我的范围。 本文的完整代码可在Github代码库中查看。 本博文译自 jrbtaylor 的博客。
http://www.zqtcl.cn/news/47837/

相关文章:

  • 做面食视频网站wordpress 更改密码
  • 网站竞争对手wordpress 网站域名
  • 苏州网站建设万户wordpress文章改为已发布
  • 如何手机做网站30天网站建设全程实录
  • 东莞疾控中心最新通知合肥seo关键词排名
  • 苏网站建设双控机制建设网站
  • 南宁建设厅网站凡客建站网站下载
  • 九四玩手游代理平台极致优化WordPress网站速度
  • 网站建设专业吗锚文本外链查询网站
  • 石家庄免费网站建设竞价推广渠道
  • 网站集群建设申请山东建设银行怎么招聘网站
  • 如何设置个人网站外贸软件建设
  • 用手机能创建网站吗建网站企划书
  • 网站分页效果不是用于制作网页的软件
  • 中山中小型网站产品发布网站的装饰怎么做
  • 鲜花销售网站建设策划表手机制作企业网站
  • 网站建站公司排行网站建设的应对措施
  • 用wordpress建立学校网站吗中文手机app开发软件
  • 主流的网站建设的软件vps网站目录显示灰色的
  • 佛山个人网站建设网站里面的链接怎么做
  • 企业形象型网站建设怎样改网站英文域名
  • 合肥网站优化哪家好seo引流什么意思
  • 宁波网站优化价格wordpress文章自动采集
  • 网站建设收费标准教程厦门市建设局
  • 西安住房和城乡建设局网站做瞹视频网站
  • 淄博外贸网站哪家好网站相关知识
  • 英文视频网站如何做外链微信公众号搭建微网站
  • 购物网站首页设计怎么注册个人的网站
  • 淘宝网站建设的目的py网站开发
  • 网站建设外文参考文献wordpress哪个版本 最快