Способность Keras иметь гибкий размер входного тензора? - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь запустить двунаправленный LSTM для входных данных размером [Нет, нет, 16], где первое измерение - это количество обучающих выборок, второе измерение - это количество слов в предложении, а третьеразмерность - это размер вложения слова для каждого слова.Таким образом, второе измерение является переменным, так как каждое предложение обучающей выборки будет иметь различное количество слов.Как указать форму ввода в этом случае?

sentence1_data = tf.keras.layers.Input(shape=(None, EMBEDDING_SIZE,), dtype='float32', name='sentence1_data')
sentence2_data = tf.keras.layers.Input(shape=(None, EMBEDDING_SIZE,), dtype='float32', name='sentence2_data')

Я ожидаю, что модель будет успешно построена.Но вместо этого я получил следующую ошибку:

ValueError: Error when checking input: expected sentence1_data to have 3 dimensions, but got array with shape (3916, 1)

Здесь 3916 - количество обучающих выборок.Кажется, Керас не в состоянии понять мой входной массив переменной второго измерения.

Ниже приведен остаток моего кода:

lstm1_out = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(NUM_HIDDEN))(sentence1_data)
lstm2_out = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(NUM_HIDDEN))(sentence2_data)
act1_out = tf.keras.layers.Dense(1, activation='softmax', name='act1_out')(lstm1_out)
act2_out = tf.keras.layers.Dense(1, activation='softmax', name='act2_out')(lstm2_out)
out = tf.keras.layers.Lambda(self.norm)((act1_out, act2_out))
self._model = tf.keras.models.Model(inputs=[sentence1_data, sentence2_data], outputs=out)
self._model.compile(loss='mean_squared_logarithmic_error', optimizer='adam', metrics=['accuracy'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...