2维array或DataFrame转换为tensor用于pytorch训练

使用数据格式为(X,Y)X为样本数量,Y为数据长度,想转换为(X,1,Y)的格式用于训练,请问怎么转换。

可以使用PyTorch中的unsqueeze()函数将数据从(X,Y)转换为(X,1,Y)的格式。

该回答引用ChatGPT
你可以使用PyTorch中的`torch.tensor()`函数将2维数组或者Pandas DataFrame转换为PyTorch所需的tensor格式。然后使用`torch.unsqueeze()`函数将tensor维度进行调整,从而满足训练要求。具体操作步骤如下:

python
import numpy as np
import torch

# 创建一个2维数组,假设有5个样本,每个样本长度为10
data = np.random.standard_normal((5, 10))

# 将2维数组转换为tensor类型
tensor_data = torch.tensor(data)

# 使用unsqueeze函数将tensor维度从(X,Y)变成了(X,1,Y),其中1是新增的维度
tensor_data = tensor_data.unsqueeze(1)


这里的`unsqueeze(1)`就是新增一个维度,使得原本的2维数组变成了3维Tensor。具体可以查看[unsqueeze函数的使用](https://pytorch.org/docs/stable/generated/torch.unsqueeze.html)。

使用Pandas DataFrame也是同理的:

python
import pandas as pd
import torch

# 创建一个DataFrame,假设有5个样本,每个样本长度为10
data = pd.DataFrame(np.random.standard_normal((5, 10)))

# 将DataFrame转换为tensor类型
tensor_data = torch.tensor(data.values)

# 使用unsqueeze函数将tensor维度从(X,Y)变成了(X,1,Y),其中1是新增的维度
tensor_data = tensor_data.unsqueeze(1)


这里的`data.values`会将DataFrame类型转换为Numpy数组,然后再将Numpy数组转为Tensor类型。

该回答引用ChatGPT GPT-4

运行结果

img

使用以下代码将2维的NumPy数组或Pandas DataFrame转换为PyTorch的tensor:
代码

import numpy as np
import pandas as pd
import torch

# 示例数据 - 你可以使用你自己的NumPy数组或DataFrame替换
data = np.array([[1, 2, 3], [4, 5, 6]])

# 如果你有一个Pandas DataFrame,可以先将其转换为NumPy数组
# data = pd.DataFrame({'A': [1, 4], 'B': [2, 5], 'C': [3, 6]})
# data = data.to_numpy()

# 将NumPy数组转换为PyTorch的tensor
data_tensor = torch.from_numpy(data)

# 改变tensor的形状为 (X, 1, Y)
data_tensor = data_tensor.unsqueeze(1)

print(data_tensor)