我正在尝试在pytorch中使用lstm。它仅使用张量作为输入。我拥有的数据采用numpy.object_
的形式,如果我将其转换为numpy.float
,则可以将其转换为tensor
。
我使用print(type(array))
检查了数据类型,它给了类'numpy.ndarray'
作为输出,而print(arr.dtype.type)
给了类'numpy.object_'
作为输出。
或者有什么方法可以将元组直接转换为torch.tensor?
答案 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))