Модель Tensorflow на GPU: "Запрошенная фигура имеет [неоправданно большое количество] значений"
Я пытаюсь запустить простую последовательную модель Tensorflow с оболочкой Keras на графическом процессоре AMD (AMD Vega 20, Tensorflow 2.2.0, Keras 2.4.3), но сталкиваюсь со странной проблемой при попытке разместить:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 15 values, but the requested shape has 15976860750
Кажется, что размер пакета принимается как количество значений для входного тензора, и каким-то образом увеличивается размер "запрошенной формы". Определение модели следующее:
def create_model(optimizer='rmsprop', init='glorot_uniform'):
# create model
model = Sequential()
model.add(Dense(12,input_dim=8, kernel_initializer=init, activation='relu'))
model.add(Dense(8, kernel_initializer=init, activation='relu'))
model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
return model
modelClf = KerasClassifier(build_fn=create_model, verbose=1, batch_size=15, epochs=9)
Та же самая модель отлично работает, если я запускаю ее только на ЦП, на машине, на которой не установлен графический процессор. Он также хорошо работает с реализацией CUDA11 на другом компьютере, на котором работает графический процессор NVidia (с Tensorflow 1.15.3 и Keras 2.3.1).
Я понятия не имею, почему он будет запрашивать размер памяти графического процессора в качестве размера ввода в этой более поздней версии Tensorflow, и только при наличии графического процессора AMD. Есть ли что-то очевидное, что я могу ошибиться с конфигурацией здесь?
РЕДАКТИРОВАТЬ: В ответ на комментарии ниже после некоторой настройки "запрошенный размер" каким-то образом связан с размером пакета, а не с памятью графического процессора, как предполагалось (число, по-видимому, было совпадением - установка размера пакета на 10 дает "запрошенный размер" из 1092616192 вместо). Входные данные - это простой фрейм данных панды с 8 значениями в каждой строке (как определено с помощью input_dim, и, как уже упоминалось, это отлично работает с той же реализацией на других машинах).
Ошибка возникает во время вызова fit() для обучения - по выходным данным я вижу, что он получает около 5 эпох, прежде чем вот-вот вылетит. Отслеживание: (с "~/rocm/keras" просто путь к тому месту, где у меня установлены пакеты python для этой среды)
File "~/rocm/keras/tensorflow/python/keras/wrappers/scikit_learn.py", line 223, in fit
return super(KerasClassifier, self).fit(x, y, **kwargs)
File "~/rocm/keras/tensorflow/python/keras/wrappers/scikit_learn.py", line 166, in fit
history = self.model.fit(x, y, **fit_args)
File "~/rocm/keras/tensorflow/python/keras/engine/training.py", line 66, in _method_wr apper
return method(self, *args, **kwargs)
File "~/rocm/keras/tensorflow/python/keras/engine/training.py", line 848, in fit
tmp_logs = train_function(iterator)
File "~/rocm/keras/tensorflow/python/eager/def_function.py", line 580, in __call__
result = self._call(*args, **kwds)
File "~/rocm/keras/tensorflow/python/eager/def_function.py", line 611, in _call
return self._stateless_fn(*args, **kwds) # pylint: disable=not-callable
File "~/rocm/keras/tensorflow/python/eager/function.py", line 2420, in __call__
return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access
File "~/rocm/keras/tensorflow/python/eager/function.py", line 1665, in _filtered_call
self.captured_inputs)
File "~/rocm/keras/tensorflow/python/eager/function.py", line 1746, in _call_flat
ctx, args, cancellation_manager=cancellation_manager))
File "~/rocm/keras/tensorflow/python/eager/function.py", line 598, in call
ctx=ctx)
File "~/rocm/keras/tensorflow/python/eager/execute.py", line 60, in quick_execute
inputs, attrs, num_outputs)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 10 values, but the requested shape has 1092616192