Ошибка при совмещении двух массивов NumPy
Я учусь создавать нейросети, и я сделал для обучения нейронку, которая отличает кошек от собак. Сначала у неё была низкая точность(0.50), тогда я обучал её на 100 фото кошек и собак. Сейчас я скачал датасет Google на 10000 фото кошек, и столько же собак. Я нормализовал файлы, перевёл их в .npy и запустил обучение нейросети. В итоге в первые 20 секунд работы появились эти предупреждения:
2024-01-07 15:09:51.166129: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.
WARNING:tensorflow:From C:\Users\artyo\AppData\Local\Programs\Python\Python311\Lib\site-packages\keras\src\losses.py:2976: The name tf.losses.sparse_softmax_cross_entropy is deprecated. Please use tf.compat.v1.losses.sparse_softmax_cross_entropy instead.
Но это не особо важно как мне кажется, они были и раньше, они не влияют на работу. Но спустя примерно 15-20 минут работы(всё это время ничего не происходит, только процесс Python забирает около 13 гигов ОЗУ), нейронка выдаёт следующее:
Traceback (most recent call last):
File "e:\Unity\!!neuro\projects\catsAndDogs100\main.py", line 15, in <module>
train_data = np.concatenate((cats_train_data, dogs_train_data), axis=0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
numpy.core._exceptions._ArrayMemoryError: Unable to allocate 10.1 GiB for an array with shape (9000, 224, 224, 3) and data type float64
Как я понял, это что-то связанное с недостатком какой-то памяти, и происходит эта ошибка ещё до обучения, на моменте объединения массивов с кошками и собаками. На момент запуска программы, на диске с нейронкой доступно 200 гигабайт, на системном диске 150 гигабайт, а оперативки на момент запуска свободно около 14 гигов. Я уже пробовал сокращать количество изображений в датасете с 12500 до 9900, в результате уменьшилось только количество "недоступных" гигабайт в тексте ошибки..
Ответы (1 шт):
Вы сами ответили на свой вопрос. Уменьшайте число изображений до исчезновения ошибки (нехватки памяти). Еще можно попробовать изменить точность данных
np.concatenate((cats_train_data, dogs_train_data), axis=0, dtype=np.float32)
или даже float16