TensorFlow Keras возвращает несколько прогнозов, ожидая одного - PullRequest
0 голосов
/ 30 декабря 2018

Я изучаю TensorFlow и LSTM, и мне интересно, почему мой вывод прогноза имеет несколько значений, когда я тренирую его возвращать одно.Моя цель - получить одно значение от 0 до 1 после тренировки с массивами для анализа настроений.

Входные данные обучения выглядят следующим образом:

[[59, 21, ... 118, 194], ... [12, 110, ... 231, 127]]

Все входные массивы одинаковыдлина дополняется 0. Данные цели обучения выглядят следующим образом:

[1.0, 0.5, 0.0, 1.0, 0.0 ...]

Модель:

model = Sequential()
model.add(Embedding(input_length, 64, mask_zero=True))
model.add(LSTM(100))
model.add(Dense(1, activation=tf.nn.sigmoid))

Почему прогноз, по-видимому, оценивает каждое отдельное значение за раз, а немассив в целом?

model.predict([192])
# Returns [[0.5491102]]
model.predict([192, 25])
# Returns [[0.5491102, 0.4923803]]
model.predict([192, 25, 651])
# Returns [[0.5491102, 0.4923803, 0.53853387]]

Я не хочу брать среднее значение выходных данных, потому что отношения между значениями во входных массивах имеют значение для анализа настроений.Если я тренируюсь, чтобы предсказать одно значение, я не понимаю, почему одно значение не выводится.Я новичок в TensorFlow, Keras и многоуровневых нейронных сетях, поэтому я уверен, что упускаю что-то очевидное.

1 Ответ

0 голосов
/ 30 декабря 2018

Когда вы пишете:

model.predict([192, 25, 651])

, это значит, что вы даете модели три входных сэмпла и, следовательно, взамен вы получите три выхода, по одному для каждого входного сэмпла.Вместо этого, если под [192, 25, 651] вы действительно подразумеваете одну входную выборку, вы заключаете ее в два списка:

model.predict([[[192, 25, 651]]])

Причина: самый внешний список соответствует списку всехвходные данные для всех входных слоев модели, который здесь один.Второй список соответствует данным для первого (и единственного) входного слоя, а третий список соответствует одной входной выборке.Это относится к списку входов, поскольку модели Keras с несколькими входами (и несколькими выходами) должны принимать в качестве входных данных список входных массивов.Лучше использовать вместо этого массив numpy:

model.predict(np.array([[192, 25, 651]]))

np.array([[192, 25, 651]]) имеет форму (1,3), что означает один образец длины 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...