Проблема с параметром разделенного размера набора данных Tensorflow: локальное рандеву прерывается со статусом: OUT_OF_RPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с параметром разделенного размера набора данных Tensorflow: локальное рандеву прерывается со статусом: OUT_OF_R

Сообщение Anonymous »

Довольно новый генератор данных и набор данных из tensorflow. Я борюсь с размером пакета, эпох и шага... Я не могу придумать хорошую настройку для устранения ошибки «Локальное рандеву прерывается со статусом: OUT_OF_RANGE: Конец последовательности»
Я попробуйте использовать размер части моих данных, вызванный генератором данных, и попробуйте использовать полный размер всего моего набора данных и размер разделенного набора данных, но, похоже, никто не работает.
Вот упрощенный код из моей последней попытки

Код: Выделить всё

def data_generator(df, chunk_size):

total_number_sample = 10000

for start_idx in range(1, total_number_sample , chunk_size):

end_idx = start_idx + chunk_size-1

df_subset = df.where(col('idx').between(start_idx, end_idx))

feature = np.array(df_subset.select("vector_features_scaled").rdd.map(lambda row: row[0].toArray()).collect())
label = df_subset.select("ptype_s_l_m_v").toPandas().values.flatten()

yield feature, label

Код: Выделить всё

dataset = tf.data.Dataset.from_generator(
lambda: data_generator(df, chunk_size),
output_signature=(
tf.TensorSpec(shape=(None, 24), dtype=tf.float32),
tf.TensorSpec(shape=(None, 4), dtype=tf.float32)
))
Таким образом я разделяю и группирую свои данные для обучения/проверки

Код: Выделить всё

batch_sz = 100
split_ratio = .9
split_size = math.floor((chunk_size*10) * split_ratio)

train_dataset = dataset.take(split_size).batch(batch_sz)
train_dataset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)
test_dataset = dataset.skip(split_size).batch(batch_sz)
test_dataset = test_dataset.prefetch(tf.data.experimental.AUTOTUNE)

steps_per_epoch=math.ceil(10000 * split_ratio) / batch_sz)
validation_steps=math.ceil((10000-split_size)) / batch_sz)

model.fit(train_dataset,
steps_per_epoch=steps_per_epoch,
epochs=3,
validation_data=test_dataset,
validation_steps=validation_steps,
verbose=2)

results = model.evaluate(dataset.batch(batch_sz))
без пакетной обработки все работает отлично (model.fit() и model.evaluate())
но когда я использую пакетную обработку, я получаю эту ошибку:

Код: Выделить всё

W tensorflow/core/framework/local_rendezvous.cc:404] Local rendezvous is aborting with status: OUT_OF_RANGE: End of sequence
[[{{node IteratorGetNext}}]]
/usr/lib/python3.11/contextlib.py:155: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset.
self.gen.throw(typ, value, traceback)
Я вижу много информации об эпохе Steps_per_epoch и размере пакета, но я не нашел решения при применении к разделенным данным.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -is-aborti
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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