from_tensors
преобразовать входной тензор в один большой тензор. Например, если вы запустите приведенный ниже пример:
import tensorflow as tf
tf.enable_eager_execution()
dataset2 = tf.data.Dataset.from_tensors(
(tf.random_uniform([52388, 50, 41], maxval=10, dtype=tf.int32),
tf.random_uniform([52388, 11], maxval=10, dtype=tf.int32)))
for i, item in enumerate(dataset2):
print('element: ' + str(i), item[0], item[1])
Вы заметили, что мы повторяем набор данных только один раз, в то время как мы ожидаем, что он будет повторяться 52388 раз!
Теперь предположим, что мы хотим передать этот единственный большой тензор нашей модели. Tensorflow преобразуется в [None, 1]
, который None
является размером нашей партии. С другой стороны, вы указываете ввод модели с [None, 41]
, что означает, что модель ожидает ввод с формой [None, None, 41]
. Следовательно, это несоответствие вызывает ошибку.
Как это исправить?
Использование from_tensor_slices
.
По-прежнему выдает ошибку измерения, как ее исправить? Определите входное измерение для LSTM:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(32, name='inputs', input_shape=(50, 41)))
model.add(tf.keras.layers.Dense(11, activation='softmax', name='dense'))
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])