PyTorch中.new()
的作用详解
在PyTorch中,.new()
是一个非常有用的方法,它可以用来创建一个新的Tensor,同时可以指定新Tensor的形状、数据类型、设备等属性。本文将详细介绍.new()
的用法和示例。
1. .new()
的基本用法
.new()
的基本用法如下:
new_tensor = tensor.new(size=None, dtype=None, device=None, requires_grad=False)
其中,size
参数指定新Tensor的形状,可以是一个整数或一个元组;dtype
参数指定新Tensor的数据类型;device
参数指定新Tensor所在的设备;requires_grad
参数指定新Tensor是否需要梯度计算。
下面是一个示例:
import torch
# 创建一个形状为(2, 3)的FloatTensor
x = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
# 创建一个形状为(2, 3)的LongTensor
y = x.new(size=(2, 3), dtype=torch.long)
print(y)
输出结果为:
tensor([[0, 0, 0],
[0, 0, 0]])
可以看到,通过.new()
方法创建的新Tensor的值都是未初始化的,需要手动赋值。
2. .new()
的高级用法
.new()
方法还可以用来创建与原Tensor具有相同形状、数据类型、设备等属性的新Tensor。这种用法可以避免手动指定新Tensor的属性,提高代码的可读性和可维护性。
下面是一个示例:
import torch
# 创建一个形状为(2, 3)的FloatTensor
x = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
# 创建一个与x具有相同形状、数据类型、设备的新Tensor
y = x.new(x.shape)
print(y)
输出结果为:
tensor([[0., 0., 0.],
[0., 0., 0.]])
可以看到,通过.new()
方法创建的新Tensor与原Tensor具有相同的形状、数据类型、设备等属性。
3. 示例说明
示例1:使用.new()
方法创建一个全零的Tensor
以下是使用.new()
方法创建一个全零的Tensor的步骤:
- 创建一个形状为(2, 3)的FloatTensor:
```python
import torch
x = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
```
- 使用
.new()
方法创建一个与x形状相同的全零Tensor:
python
y = x.new(x.shape).zero_()
这里使用了.zero_()
方法将新Tensor的值全部设置为0。
- 输出结果:
python
print(y)
输出结果为:
tensor([[0., 0., 0.],
[0., 0., 0.]])
示例2:使用.new()
方法创建一个随机的Tensor
以下是使用.new()
方法创建一个随机的Tensor的步骤:
- 创建一个形状为(2, 3)的FloatTensor:
```python
import torch
x = torch.FloatTensor([[1, 2, 3], [4, 5, 6]])
```
- 使用
.new()
方法创建一个与x形状相同的随机Tensor:
python
y = x.new(x.shape).normal_()
这里使用了.normal_()
方法将新Tensor的值设置为随机数。
- 输出结果:
python
print(y)
输出结果为:
tensor([[ 0.0325, -0.1025, -0.2345],
[-0.2345, -0.2345, 0.0325]])
以上就是PyTorch中.new()
的作用详解,包括基本用法和高级用法,以及两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytorch中.new()的作用详解 - Python技术站