pytorch如何将Variable数据转化为Tensor数据

Song • 101 次浏览 • 0 个回复 • 2018年04月14日

有网友提问如何将Variable数据转化为Tensor数据,这个确实是非常实用的问题,我们在使用pytorch过程中常常会将Variable数据转化为Tensor或者Tensor转换为Variable

import torch
from torch.autograd import Variable

# 创建一个tensor张量
tensordata = torch.FloatTensor(2,3)
# tensor转张量非常简单,只需要Variable即可
variabledata = Variable(tensordata)
# Variable转换为tensor
backtotensor = variabledata.data

提问如下

如何将Variable数据转化为Tensor数据

sentence_train_idx = torch.LongTensor(sentence_train_idx)
sentence_train_idx = Variable(sentence_train_idx)
sentence_train_vec = embeds(sentence_train_idx)
label_data = all_train_data[1]
label_data = torch.IntTensor(label_data)
label_data = Variable(label_data)

上面是对数据的一些操作Tensor化的操作


torch_dataset = Data.TensorDataset(
    data_tensor=sentence_train_vec,
    target_tensor=label_data,
)
loader = DataLoader(
    dataset=torch_dataset,
    batch_size=BATCH_SIZE,
    shuffle=True,
    num_workers=4,
)

加入数据集


for epoch in range(10):
    for step, (b_x, b_y) in enumerate(loader):

        print(step, "| b_x ", b_x, "| b_y ", b_y, " | epoch ", epoch)

上面是提取数据 但是就在这里出了错误

TypeError: batch must contain tensors, numbers, dicts or lists; found <class 'torch.autograd.variable.Variable'>

解决方案

由于非全量代码,我不能直接写成一样,其实从问题而言。可能会有不正确的地方,欢迎指正。

import torch
from torch.autograd import Variable
from torch.utils.data import TensorDataset, DataLoader

sentence_train_vec = Variable(torch.randn(100, 30))
label_data = Variable(torch.randn(100, 10))

torch_dataset = TensorDataset(
    data_tensor = sentence_train_vec,
    target_tensor = label_data,
)

loader = DataLoader(torch_dataset, batch_size=8,shuffle=True,num_workers=4)

print(loader)

原创文章,转载请注明 :pytorch如何将Variable数据转化为Tensor数据 - pytorch中文网
原文出处: https://ptorch.com/news/155.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
Pytorch是什么?关于Pytorch! pytorch训练的模型能否被torch7加载并使用?