Как преобразовать тензор формы (36,) в (1,36) - PullRequest
0 голосов
/ 25 октября 2019

Я еще не знаком с NumPy, я надеюсь, что кто-то может мне помочь.

Код:

x = tf.placeholder(tf.float32 , [1 , 36])
# L is a list from a list of lists.
sess.run(rnn_model , {x : L})

И ошибка:

ValueError: Cannot feed value of shape (36,) for Tensor 'Placeholder:0', which has shape '(1, 36)'

Я думаю, это потому, что L - это список из 2D-списка, python считает, что L должен быть списком столбцов.

Как я могу устранить ошибку?

Ответы [ 3 ]

0 голосов
/ 25 октября 2019

Вы можете использовать np.expand_dims () , чтобы преобразовать список в вектор-столбец следующим образом:

sess.run(rnn_model , {x : np.expand_dims(L, axis=0)})
0 голосов
/ 25 октября 2019

Вы можете добавить дополнительное измерение размера 1, используя необычную индексацию, используя None в желаемой позиции.

L[None, :]

Или

np.array(L)[None, :]

Если L не ndarray.

0 голосов
/ 25 октября 2019

Вы можете использовать numpy, чтобы изменить форму list L, а затем использовать tf.convert_to_tensor().

Пример

import numpy as np
import tensorflow as tf
print(tf.__version__)
print(np.__version__)

L = [i for i in range(36)]
La = np.array(L).reshape((1,len(L))).astype(np.float32)
Lt = tf.convert_to_tensor(La)
print(y)

Вывод :

1.15.0
1.17.3
Tensor("Const_7:0", shape=(1, 36), dtype=float32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...