如何将具有对象类型的numpy.ndarray转换为torch.tensor?

时间:2019-05-27 11:23:55

标签: python-3.x numpy pytorch

我正在尝试在pytorch中使用lstm。它仅使用张量作为输入。我拥有的数据采用numpy.object_的形式,如果我将其转换为numpy.float,则可以将其转换为tensor

我使用print(type(array))检查了数据类型,它给了类'numpy.ndarray'作为输出,而print(arr.dtype.type)给了类'numpy.object_'作为输出。

或者有什么方法可以将元组直接转换为torch.tensor?

1 个答案:

答案 0 :(得分:0)

pytorch LSTM返回一个元组。因此,由于第二个LSTM层self.seq2无法处理该元组,您会收到此错误。所以, 更改

prefix1=self.seq1(input1) 
suffix1=self.seq1(input2)

像这样:

prefix1_out, prefix1_states = self.seq1(input1) 
suffix1_out, suffix1_states = self.seq1(input2) 

然后将prefix1_out和suffix1_out张量传递给下一个LSTM层,

prefix2_out, prefix2_states = self.seq2(prefix1_out) 
suffix2_out, suffix2_states = self.seq2(suffix1_out)

而且,像这样的concat prefix1_out和suffix1_out张量

result = torch.cat([out1,out2],1) 

还要更改

r1=F.sigmoid(self.fc1(result)) 
r2=self.fc2(r1)

像这样:

out_ll = self.fc1(result)
r1 = nn.Sigmoid() 
r2 = self.fc2(r1(out_ll))