Я новичок 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. Мои данные о поездах, тестах и проверках относятся к тензорным типам.
Заранее спасибо!