Почему Keras pad_sequence не работает дважды в одном и том же коде? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь предварительно обработать некоторые тексты с помощью Keras, и мне нужно использовать функцию keras.preprocessing.sequence.pad_sequences() более одного раза, однако, похоже, она этого не позволяет.Есть ли способ обойти эту ошибку и использовать функцию более одного раза?

import numpy
from keras.preprocessing.sequence import pad_sequences

example_sequences = [[1,2,3,4],[1,5,4],[2,3]]
MAX_SEQUENCE_LENGTH = 3

pad_sequences = pad_sequences(example_sequences, maxlen=MAX_SEQUENCE_LENGTH)
print(pad_sequences)

sequences2 = [[1,2,3,4],[1,5,4],[2,3]]
MAX_SEQUENCE_LENGTH2 = 3

pad_sequences2 = pad_sequences(sequences2, maxlen=MAX_SEQUENCE_LENGTH2)

Вывод:

Using TensorFlow backend.
[[2 3 4]
 [1 5 4]
 [0 2 3]]
Traceback (most recent call last):
  File "C:\Users\test.py", line 47, in <module>
    pad_sequences2 = pad_sequences(sequences2, maxlen=MAX_SEQUENCE_LENGTH2)
TypeError: 'numpy.ndarray' object is not callable

Как вы можете видеть при первом вызове функции, она производитМатрица, однако, во второй раз, когда она вызывается, я получаю сообщение об ошибке, что numpy.ndarray не вызывается.Обратите внимание, что входные данные для функции pad_sequence идентичны, и никакие входные данные не являются пустым массивом.Так почему я не получаю один и тот же вывод из функции и как это исправить, чтобы я мог использовать функцию pad_sequence более одного раза?

1 Ответ

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

Вы присваиваете вывод первого pad_sequences переменной с именем pad_sequences:

pad_sequences = pad_sequences(example_sequences, maxlen=MAX_SEQUENCE_LENGTH)
print(pad_sequences)  # "pad_sequences" is now a Numpy array!

Следовательно, к тому времени, когда вы достигнете второго "вызова" для pad_sequences, этофактически массив Numpy:

pad_sequences2 = pad_sequences(sequences2, maxlen=MAX_SEQUENCE_LENGTH2)

Просто переименуйте выходную переменную, например,

padded_sequences = pad_sequences(example_sequences, maxlen=MAX_SEQUENCE_LENGTH)
print(padded_sequences)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...