Как я могу преобразовать numpy.ndarray, имеющий тип объекта, в torch.tensor? - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь работать на lstm в pytorch. В качестве входных данных используются только тензоры. Данные, которые у меня есть, имеют форму numpy.object_, и если я преобразую их в numpy.float, их можно преобразовать в tensor.

Я проверил тип данных, используя print(type(array)), он дает класс 'numpy.ndarray' в качестве вывода и print(arr.dtype.type) дает класс 'numpy.object_' в качестве вывода.

Или есть ли способ напрямую преобразовать кортеж в torch.tensor?

1 Ответ

0 голосов
/ 28 мая 2019

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...