Модель keras не обучается при использовании конвейера tf.dataPython

Программы на Python
Ответить
Anonymous
 Модель keras не обучается при использовании конвейера tf.data

Сообщение Anonymous »

Модель keras обучается с использованием массивов Numpy в качестве входных данных, но не может добиться какого-либо прогресса при чтении данных из конвейера tf.data. В чем может быть потенциальная причина?
В частности, модель использует пакетные многомерные временные ряды (поэтому каждая точка представляет собой тензор N x M) и решает задачу классификации. Если данные готовятся заранее путем агрегирования временных рядов в большой массив Numpy, то модель успешно обучается, о чем свидетельствует значительное увеличение точности. Однако когда с помощью конвейера tf.data подготавливаются точно такие же входные данные, точность остается на базовом уровне.
Я сравнил два набора данных путем записи на диск. , и они идентичны. Также типы совпадают.
Попробовал отключить многопоточность (IIUC), установив
options.threading.private_threadpool_size = 1

и экспериментировал с набором опций options.experimental_optimization.
Может ли быть так, что данные считываются параллельно из набор данных tf.data, а не последовательное чтение из массива Numpy?
Для полноты, вот конвейер, где np_array содержит "raw" данные:
ds = tf.data.Dataset.from_tensor_slices(np_array.T)
y_ds = (
ds
.skip(T - 1)
.map(lambda s: s[-1] - 1)
.map(lambda y: to_categorical(y, 3))
)
X_ds = (
ds
.map(lambda s: s[:n_features])
.window(T, shift=1, drop_remainder=True)
.flat_map(lambda x: x.batch(T, drop_remainder=True))
.map(lambda x: tf.expand_dims(x, -1))
)
Xy_ds = (
tf.data.Dataset.zip(X_ds, y_ds)
.batch(size_batch)
.repeat(n_epochs * size_batch)
.prefetch(tf.data.AUTOTUNE)
)

и как вызывается fit() (значение Steps_per_epoch правильное)
model.fit(
Xy_train,
epochs=n_epochs,
steps_per_epoch=199,
verbose=2
)


Подробнее здесь: https://stackoverflow.com/questions/792 ... a-pipeline
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»