DP-GAN-判别器代码

将输出的rgb作为输入,输入到判别器中。接着执行一个for循环,看一下body_down列表的组成和x经过body_down之后的值。

body_down是由残差块D组成的列表:

残差块的参数为:(3,128),(128,128),(128,256),(256,256),(256,512),(512,512)/-1,根据i==0,判断first参数的True或者False。

残差块组成:

x首先进过shortcut。假设执行第一次for循环,通道(3,128)/-1/True.

将RGB下采样两倍。

接着in=3,out=128,learned_shortcut=True。

x再经过一个卷积:

接着输出x。执行完shortcut再执行卷积:

conv1输出一个mid_layer,conv2输出最终的out.

因为x在开始进行了下采样,为了能够相加,这里也对dx进下采样。

接着执行第二个块,输入和输出通道都是128.只执行下采样两倍。

后面的四个根据通道是否相等只执行如下操作:

这样encoder_res里面有六个值,将第四层和第六层输出放在dis_list中:

接着取出dis_list进行处理:

self.dis列表里面存放了两个nn.Sequential,分别处理dis_list的第一第二个。

python 复制代码
        self.dis = nn.ModuleList([
                    nn.Sequential(
                            nn.Conv2d(256, 64, 3, padding=1, stride=2),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 1, 3, padding=1)
                        ),
                    nn.Sequential(
                            nn.Conv2d(512, 64, 3, padding=1, stride=2),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 64, 3, padding=1),
                            nn.BatchNorm2d(64),
                            nn.LeakyReLU(0.2, False),
                            nn.Conv2d(64, 1, 3, padding=1)
                        )
            ])

在Sequential内部,首先将输入下采样两倍,然后三个卷积进行特征提取操作,最后卷积输除通道为1,输出Fake 或者real的概率。对应于:

接着将encoder最后一个输出作为decoder输入进行上采样:

残差块参数为:(512,512)/1,将输入上采样两倍。

剩下的五次卷积,分别倒着取列表里面的通道:

将decoder的值和encoder拼接,上采样6次,添加到return_feats列表中。

将最后一层输出值进过一个卷积,输出通道为类别通道数:

最后将最后一层输出值,encoder两个中间变量值,decoder的5个上采样中间值作为输出。

相关推荐
keykey6.3 分钟前
卷积神经网络(CNN):让AI学会“看“
开发语言·人工智能·深度学习·机器学习
kcuwu.4 分钟前
Claw Code 项目架构万字解读
人工智能·架构
qq7422349846 分钟前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
暗夜猎手-大魔王9 分钟前
转载--Hermes Agent 11 | 智能审批与平台化安全:当 AI 来守护 AI
人工智能·python·安全
feiwuw10 分钟前
氛围编程是什么?以及为什么它又分出了“规划”和“严肃”模式
人工智能·氛围编程
是烨笙啊14 分钟前
如何获取 dify-deploy skill 所需要的三个key值
人工智能·ai编程·dify
龙腾AI白云16 分钟前
智能体+大模型=新生产力
人工智能·plotly·知识图谱
智塑未来17 分钟前
AI耳机哪个牌子好?EARWEISS听智慧凭硬核技术脱颖而出
人工智能
辣香牛肉面18 分钟前
Stable Diffusion本地部署教程及模型包
人工智能
升鲜宝供应链及收银系统源代码服务24 分钟前
升鲜宝AI助手 E-R 图与操作说明书(三)---升鲜宝生鲜配送供应链管理系统源代码服务
大数据·人工智能·机器学习·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码