#python #tensorflow #keras #word2vec #word-embedding
#питон #тензорный поток #keras #слово 2vec #встраивание слов
Вопрос:
Я прочитал все другие ответы по этой теме, но мой вариант использования немного отличается.
У меня есть массив numpy формы (800,128,1). Каждый элемент из 800 элементов хранит вложение формы word2vec (128,1). Теперь я хотел отправить это в качестве входных данных с размером пакета 64 в модель Keras с первым слоем в качестве входного слоя. Я получаю следующую ошибку:
expected party to have 2 dimensions, but got array with shape (800, 128, 1)
Я понимаю, что для входного слоя требуется 2 измерения, но какие два? Или я должен указать форму ввода самостоятельно как трехмерную?
Входной слой в настоящее время является следующим:
Input(shape = (embedding_size, ), name = 'party')
Ответ №1:
Форма ввода — это (embedding_size,)
, где embedding_size
предположительно 128. Таким образом, ожидается, что входные данные будут представлять собой массив shape (batch_size, embedding_size)
, а не (batch_size, embedding_size, 1)
. Вам нужно изменить свой массив, чтобы исключить последнее измерение размера 1.
Комментарии:
1. Спасибо. Я знал, что это проблема, и изначально у меня не было этого измерения 1. Но у numpy есть такая особенность, что он не может хранить массивы как элементы, поэтому вместо этого мне пришлось создать 3D-массив. Есть ли выход из этого?
2. Вы можете создать массив numpy A формы (800,128,1) и изменить его форму с помощью np.reshape или np.squeeze. Например, np.squeeze (A) выполнит эту работу. Тогда у вас будет массив формы (800, 128).