Problem mit geteilten Größenparametern des Tensorflow-Datensatzes: Das lokale Rendezvous wird mit dem Status abgebrochenPython

Python-Programme
Guest
 Problem mit geteilten Größenparametern des Tensorflow-Datensatzes: Das lokale Rendezvous wird mit dem Status abgebrochen

Post by Guest »

Ziemlich neu mit Datengenerator und Datensatz von Tensorflow. Ich habe Probleme mit der Größenanpassung von Batch, Epochen und Schritten ... Ich kann mir nicht vorstellen, wie man den Fehler „Lokales Rendezvous wird mit Status abgebrochen: OUT_OF_RANGE: Ende der Sequenz“ beseitigt.
I Versuchen Sie es mit der Größe eines vom Datengenerator aufgerufenen Teils meiner Daten und versuchen Sie es mit der vollständigen Größe meines gesamten Datensatzes und der Größe des geteilten Datensatzes, aber niemand scheint zu funktionieren.
Hier ein vereinfachter Code von mein letzter Versuch

Code: Select all

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

Code: Select all

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)
))
Ich teile und stapele meine Daten auf diese Weise zum Trainieren/Validieren

Code: Select all

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))
Ohne Batch funktionieren alle großartig (model.fit() und model.evaluate())
aber wenn ich Batch verwende, erhalte ich diese Fehlermeldung:

Code: Select all

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)
Ich sehe viele Hinweise auf die Epoche „steps_per_epoch“ und die Stapelgröße, finde aber beim Anwenden auf geteilte Daten keine Lösung.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post