Ошибка подтверждения при использовании model.fit () в tf.distribute.MirroredStrategy - PullRequest
0 голосов
/ 10 марта 2020

Я новичок ie для Tensorflow-GPU. Я работаю над большим набором данных (~ 30 миллионов строк в данных поезда, по 16 миллионов строк в действительных и тестовых данных). Я пытаюсь создать модель LSTM Autoencoder для прогнозирования временных рядов по этому набору данных. Я следовал учебнику в документации Tensorflow, чтобы распределить свою модель по доступным графическим процессорам, используя MirroredStrategy с HierarchicalCopyAllReduce, следующим образом:

with strategy.scope():
    model = tf.keras.Sequential([
        tf.keras.layers.LSTM(32, activation = 'relu', input_shape = (timesteps, features), return_sequences = True),
        tf.keras.layers.LSTM(16, activation = 'relu', return_sequences = False),
        tf.keras.layers.RepeatVector(timesteps),
        tf.keras.layers.LSTM(16, activation = 'relu', return_sequences = True),
        tf.keras.layers.LSTM(32, activation = 'relu', return_sequences = True),
        tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(num_classes, activation = 'softmax'))
    ])

    model.compile(loss = tf.keras.losses.CategoricalCrossentropy(),
                  optimizer = tf.keras.optimizers.Adam(),
                  metrics = ['accuracy'])

Когда я пытаюсь подогнать модель, используя следующий код , Я получаю следующее сообщение об ошибке:

model.fit(X_train_tf, y_train_tf, epochs = 12, validation_data = (X_valid_tf, y_valid_tf), verbose = 1, callbacks=callbacks)

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-17-96b3da4e4eff> in <module>
----> 1 model.fit(X_train_tf, y_train_tf, epochs = 12, validation_data = (X_valid_tf, y_valid_tf), verbose = 1, callbacks=callbacks)

~/.conda/envs/user/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_v1.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
    783         max_queue_size=max_queue_size,
    784         workers=workers,
--> 785         use_multiprocessing=use_multiprocessing)
    786 
    787   def evaluate(self,

~/.conda/envs/user/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_distributed.py in fit(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, **kwargs)
    617         validation_split=validation_split,
    618         shuffle=shuffle,
--> 619         epochs=epochs)
    620     if not dist_utils.is_distributing_by_cloning(model):
    621       with model._distribution_strategy.scope():

~/.conda/envs/user/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_v1.py in _distribution_standardize_user_data(self, x, y, sample_weight, class_weight, batch_size, validation_split, shuffle, epochs, allow_partial_batch)
   2165         x = ds.batch(batch_size, drop_remainder=drop_remainder)
   2166       else:
-> 2167         assert isinstance(x, dataset_ops.DatasetV2)
   2168         training_utils.validate_dataset_input(x, y, sample_weight,
   2169                                               validation_split)

AssertionError: 

Почему возникает эта ошибка и как ее устранить?

Я использую версию Tensorflow 2.2.0-dev20200308 и версию Keras 2.3 0,1. Мои данные о поездах, тестах и ​​проверках относятся к тензорным типам.

Заранее спасибо!

...