У меня есть модель keras, обученная на tf.data.Dataset
, например:
dataset = dataset.map(preprocess)
sess = tf.Session()
sess.run(tf.tables_initializer())
tf.keras.backend.set_session(sess)
dataset = dataset.batch(50).repeat()
model.fit(dataset, steps_per_epoch=100, epochs=20)
Итак, я обрабатываю таким же образом:
x = tf.data.Dataset.from_tensor_slices(data_test)
x = x.map(lambda x: ({'reviews': x}))
x = x.map(preprocess)
а потом делаю:
preds = self.model.predict(x)
но, к сожалению, вернись:
ValueError: When using iterators as input to a model, you should specify the `steps` argument.
Добавление x = x.batch(50).repeat()
перед предсказанием приводит к той же ошибке.
Есть мысли о том, что я делаю неправильно?
Спасибо!
Похоже, что в вашем методе подгонки step_per_epoch дает количество пакетов, составляющих эпоху. Точно так же вам нужно будет указать количество пакетов в тестовом наборе с шагами. Так что, возможно, вы можете объединить тестовый набор данных с размером пакета 1, если вы хотите прогноз для каждой точки данных, а затем выполните что-то вроде model.predict (x .make_one_shot_iterator (), steps = no_of_data_points)?