首页 > 其他分享 >pix2pix模型测试时不使用model.eval()

pix2pix模型测试时不使用model.eval()

时间:2024-10-17 18:31:52浏览次数:10  
标签:BN torch pix2pix eval model grad

目录

pix2pix特殊之处

pix2pix模型在测试时与众不同的特点:
1、使用dropout,引入随机性,否则容易无论什么输入都生成一样的图
2、使用Batch Normalization(BN),并且用的是test数据集batch计算统计量(这一点也比较合理,因为训练集和测试集的分布不一样,再用训练集上得到的统计量不合适)。此外,由于pix2pix的batch_size=1,BN实际上就是Instance Normalization

理论基础:model.eval()、model.train()、with torch.no_grad()

model.eval()、model.train()

两者的区别在于dropout层和BN层
model.train():dropout层会按照设定的参数p,设置保留激活单元的概率(保留概率=p)。BN层会继续计算数据的mean和var等参数并更新
model.eval():dropout层会让所有的激活单元都通过。BN层会停止计算和更新mean和var,直接使用在训练阶段已经学出的mean和var值。此模式不影响各层gradient的计算,即gradient计算和存储与training模式一样,只是不进行反向传播(back probagation)

with torch.no_grad()

with torch.no_grad()用于停止autograd模块的工作,以起到加速和节省显存的作用(可以跑更大的batch)。它的作用是将该with语句包裹起来的部分停止梯度的更新,从而节省了GPU算力和显存,但是并不会影响dropout和BN层

实际操作

在test.py中省去model.eval()。而torch.no_grad()照旧使用

参考资料

https://blog.csdn.net/qq_38410428/article/details/101102075
https://zhuanlan.zhihu.com/p/346233543

标签:BN,torch,pix2pix,eval,model,grad
From: https://www.cnblogs.com/xjl-ultrasound/p/18472871

相关文章

  • 1. 扩散模型(Diffusion Model)的思想
    生成图片的过程,很像艺术家雕刻雕像的过程。艺术家从一块石头开始,逐渐的雕刻出优美的雕像。同样的,扩散模型从全是噪音的图片开始,逐步降噪,最终生成想要的图片。目录基本思想Q&ADenoise的内部结构如何训练NoisePredicter文生图怎么做基本思想扩散模型生成图片分为以下几个步......
  • Contextualization Distillation from Large Language Model for Knowledge Graph Com
    文章目录题目摘要简介相关工作语境化提取实验结论限制附录题目用于知识图完成的大型语言模型的语境化提取论文地址:https://aclanthology.org/2024.findings-eacl.32/项目地址:https://github.com/davidli0406/contextulization-Distillation摘要    ......
  • 【Spring】获取Cookie和Session(@CookieValue()和@SessionAttribute())
    获取Cookie传统获取Cookie这是没有Spring的时候,用Servlet来获取(获取所有的Cookie)SpringMVC是基于ServletAPI构建的原始Web框架,也是在Servlet的基础上实现的@RequestMapping("/getcookie")publicStringgetCookie(HttpServletRequestrequest, ......
  • CogVideoX:Text-to-Video Diffusion Models with An Expert Transformer
    研究背景背景介绍:这篇文章的研究背景是文本到视频模型的快速发展,特别是Transformer架构和扩散模型的应用。早期尝试预训练和扩展Transformer生成视频已经显示出巨大潜力,如CogVideo和Phenaki。扩散模型在多模态生成方面也取得了显著进展,包括视频生成。研究内容:该问题的......
  • GS-LRM: Large Reconstruction Modelfor 3D Gaussian Splatting 论文解读
    目录一、概述二、相关工作1、多视图的三维重建2、前馈重建三、LRM1、编码器2、解码器3、NeRF渲染四、GS-LRM 1、输入处理2、Transformer3、损失函数五、实验六、局限一、概述    该论文提出了一种利用稀疏输入图像高效预测3D高斯原语的方法,也是第一......
  • Spatial-Temporal Large Language Model for Traffic Prediction
    1.输入数据这符合时间序列预测的典型设置:输入数据包含多个特征(如历史的流量、天气、时间等),这些特征用于帮助模型进行预测。输出数据则通常是要预测的目标变量,比如未来某个时间步的流量或温度,这个目标变量是一个单一的值,因此输出通道数是1。x_train包含多个特征(3个通道),作......
  • 【视觉分割新SOTA】一种最先进的图像分割模型!Segment Anything Model (SAM)如何使用?附
    【视觉分割新SOTA】一种最先进的图像分割模型!SegmentAnythingModel(SAM)如何使用?附代码和解释。【视觉分割新SOTA】一种最先进的图像分割模型!SegmentAnythingModel(SAM)如何使用?附代码和解释。文章目录【视觉分割新SOTA】一种最先进的图像分割模型!SegmentAnyth......
  • 07-数据表创建方式(Database First、Model First、Code First)
    常见的创建数据表结构的三种方式:DatabaseFirstModelFirst  DBA经常使用这个方式CodeFirst   推荐程序员使用,此方法专注于业务模型的设计,而不是专注数据库设计 Flask-SQLAlchemy介绍SQLALchemy实际上是对数据库的抽象,让开发者不用直接和SQL语句打交道,而是......
  • ModelMapper的常见用法 ,号称是beanUtils.copyProp....的升级版??,代码复制粘贴即可复现效
    官网案例以下将官网案例做一个解释1)快速入门递归遍历源对象的属性拷贝给目标对象拷贝对象下对象的属性值@DataclassOrder{privateCustomercustomer;privateAddressbillingAddress;}@DataclassCustomer{privateNamename;}@Dataclass......
  • 【Qt】QStandardItem和QStandardItemModle以及QModelIndex的关系
    在Qt框架中,QStandardItem、QStandardItemModel和QModelIndex是用来处理表格和数据视图的关键类。以下是它们之间的关系和用途:QStandardItemQStandardItem是QStandardItemModel中用来表示单个项的类。它可以包含数据(如文本、图标、复选框状态等)和子项(用于树结构)。QSt......