Pytorch中.new()的作用详解
作者:悲恋花丶无心之人 发布时间:2023-12-11 10:28:54
标签:Pytorch,new
一、作用
创建一个新的Tensor,该Tensor的type和device都和原有Tensor一致,且无内容。
二、使用方法
如果随机定义一个大小的Tensor,则新的Tensor有两种创建方法,如下:
inputs = torch.randn(m, n)
new_inputs = inputs.new()
new_inputs = torch.Tensor.new(inputs)
三、具体代码
import torch
rectangle_height = 1
rectangle_width = 4
inputs = torch.randn(rectangle_height, rectangle_width)
for i in range(rectangle_height):
for j in range(rectangle_width):
inputs[i][j] = (i + 1) * (j + 1)
print("inputs:", inputs)
new_inputs = inputs.new()
print("new_inputs:", new_inputs)
# Constructs a new tensor of the same data type as self tensor.
print(new_inputs.type(), inputs.type())
print('')
inputs = inputs.squeeze(dim=0)
print("inputs:", inputs)
# new_inputs = inputs.new()
new_inputs = torch.Tensor.new(inputs)
print("new_inputs:", new_inputs)
# Constructs a new tensor of the same data type as self tensor.
print(new_inputs.type(), inputs.type())
if torch.cuda.is_available():
device = torch.device("cuda")
inputs, new_inputs = inputs.to(device), new_inputs.to(device)
print(inputs.device, new_inputs.device)
结果如下:
可以看到不论inputs是多少维的,新建的new_inputs的type和device都与inputs保持一致
inputs: tensor([[1., 2., 3., 4.]])
new_inputs: tensor([])
torch.FloatTensor torch.FloatTensor
inputs: tensor([1., 2., 3., 4.])
new_inputs: tensor([])
torch.FloatTensor torch.FloatTensor
cuda:0 cuda:0
四、实际应用(添加噪声)
可以对Tensor添加噪声,添加如下代码即可实现:
noise = inputs.data.new(inputs.size()).normal_(0,0.01)
print(noise)
结果如下:
tensor([ 0.0062, 0.0137, -0.0209, 0.0072], device='cuda:0')
来源:https://blog.csdn.net/qq_36556893/article/details/100014333


猜你喜欢
- goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任
- 即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。
- vue Eslint校验代码报错在使用脚手架创建Vue项目时,一般会安装Eslint插件,这个主要是校验代码格式和规范用的,但是它很有点让人
- 前言现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗
- 如果您正尝试去处理元类,或者正受困于 Twisted 中的异步编程,或者正在研究由于使用了多分派而使您精疲力尽的面向对象编程,那么您完全错了
- 大家都知道 在Python 中可以用如下方式表示正负无穷:float("inf") # 正无穷float("-
- 本文实例为大家分享了微信小程序无滑动效果的tab点击切换的具体代码,供大家参考,具体内容如下<!--pages/dingdan/din
- 今天运行程序时报了SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSess
- 写本篇文章之前其实也关注过vue中的一个关于加载动态组件is的API,最开始研究它只是用来实现一个tab切换的功能,使用起来也蛮不错的。is
- 安装selenium打开命令控制符输入:pip install -U selenium火狐浏览器安装firebug:www.firebug.
- TTS简介TTS(Text To Speech)是一种语音合成技术,可以让机器将输入文本以语音的方式播放出来,实现机器说话的效果。TTS分成
- 前言之前写过一篇关于阿里的低代码工具LowCodeEngine 的文章,发现大家还是挺感兴趣的。最近又发现了一款很有意思的低代码工具Yao,
- 效果:myvcode.class.php:封装创建验证码的类<?php/** file:myvcode.class.php* 验证码类
- ORACLE访问SQL SERVER数据库有一篇《Oracle 异构服务实践》讲得很清楚。但里面没有讲如何设置访问多个SQL Server数
- ECharts是一个纯Javascript的图表库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器,底层依赖轻量级的Canvas类
- 目录range函数的使用第一种创建方式第二种创建方式第三种创建方式判断指定的数有没有在当前序列中循环结构总结range函数的使用作为循环遍历
- 一、logging模块讲解1.函数:logging.basicConfig()参数讲解:(1)level代表高于或者等于这个值时,那么我们才
- 本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下。闲话不说,直奔主题。建议大家跟着敲一遍代码,体会
- django1.3新加入了一个静态资源管理的app,django.contrib.staticfiles。在以往的django版本中,静态资
- 目录一、axis简介二、不一样的axis对于axis=0三、总结补充:python中某些函数axis参数的理解在我们使用Python中的Nu