Pytorch 0.4.0迁移指南(与之前版本编程上的不同点)

2024-02-19 15:38

本文主要是介绍Pytorch 0.4.0迁移指南(与之前版本编程上的不同点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版权说明:本篇文章为本人原创内容,转载请注明出处,谢谢合作!

2018年4月25号,官方发布Pytorch0.4.0版本,此版本除了支持Windows外,与之前的Pytorch版本也有诸多不同,主要表现在编程方面。因此该指南主要用来介绍Pytorch0.4.0代码方面需要注意的地方:
####1. 弃用Variables并与Tensors合并
之前版本,最终的输入数据必须转化为Variable的形式,而在Pytorch0.4.0版中,torch.Tensor包括了torch.autograd.Variable,已经不需要转化为Variable的形式。
type()的功能也变了,它不会再返回数据的类型,需要用x.type()代替。

>>>x = torch.DoubleTensor([1, 1, 1])
>>>print(type(x))<class ‘torch.Tensor’>#不再返回数据类型
>>>print(x.type())<class ‘torch.DoubleTensor’>#能返回数据类型

####2. 支持零维Tensors

>>>torch.tensor(3.1416).size()
Torch.Size([])  #零维张量

####3. 弃用volatile
之前版本的volatitle=True 相当于requires_grad=False,一般用于测试的时候不需要进行梯度计算,这样做能减少内存使用。新版中使用torch.no_grad()代替。
####4.新增dtypes、devices和numpy风格的Tensor
如:device = torch.device(“cuda” if torch.cuda.is_available() else “cpu”),会依据你的计算机配置自动选择CPU还是GPU运算。
####用一个例子来对比Pytorch 0.4.0代码上需要注意的地方:
0.3.1(老版本):

model = CNN()if use_cuda:model = model.cuda()# 训练total_loss = 0for input, target in train_loader:input, target = Variable(input), Variable(target) #需转化为Variablehidden = Variable(torch.zeros(*h_shape))  # 定义是否使用GPUif use_cuda:input, target, hidden = input.cuda(), target.cuda(), hidden.cuda()...  # 获得loss的值total_loss += loss.data[0]# 测试for input, target in test_loader:input = Variable(input, volatile=True)if use_cuda:......

0.4.0(新版本):

  # 定义device,是否使用GPU,依据计算机配置自动会选择device = torch.device("cuda" if torch.cuda.is_available() else "cpu")#用.to(device)来决定模型使用GPU还是CPUmodel = CNN().to(device)# 训练total_loss = 0for input, target in train_loader:#不需要转化为Variable,直接用Tensors作为输入,用.to(device)来决定使用GPU还是CPUinput, target = input.to(device), target.to(device)hidden = input.new_zeros(*h_shape)  ...  # 获得loss值,也与老版本不同total_loss += loss.item()          # 测试with torch.no_grad():      # 测试时不会进行梯度计算,节约内存for input, target in test_loader:...

这篇关于Pytorch 0.4.0迁移指南(与之前版本编程上的不同点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725118

相关文章

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加