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

相关文章

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

springboot security之前后端分离配置方式

《springbootsecurity之前后端分离配置方式》:本文主要介绍springbootsecurity之前后端分离配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录前言自定义配置认证失败自定义处理登录相关接口匿名访问前置文章总结前言spring boot secu

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数