Как обойти проблему с неработающим методом подбора (обучения) нейронной сети…

Я новичок в языке python и его среде, и я столкнулся с довольно забавной проблемой, из-за которой я некоторое время не мог запускать свои модели искусственной нейронной сети.

Итак, что в основном произошло: я установил anaconda и spyder, поместил все необходимые библиотеки ML в свою среду conda (keras и т. д.), и все шло нормально, пока я не вызвал метод fit для обучения нейронной сети.

После вызова функции fit() на моем классификаторе я увидел на экране spyder, что началась только первая эпоха моего обучения. Затем я увидел пару предупреждений, а затем выполнение просто остановилось без какого-либо информационного сообщения. И когда я запустил тот же файл python за пределами среды anaconda, на MacOs python по умолчанию с библиотеками, установленными в pip, я увидел, что процесс обучения начался правильно, без ошибок или исключений.

WARNING:tensorflow:From /Users/valery.yakovlev/anaconda3/envs/datascience/lib/python3.7/site-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Epoch 1/100
2019–04–09 00:04:30.999451: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2019–04–09 00:04:30.999865: I tensorflow/core/common_runtime/process_util.cc:71] Creating new thread pool with default inter op setting: 8. Tune using inter_op_parallelism_threads for best performance.

Я несколько раз пытался переустановить среду anaconda, но это не помогло. Наконец, мое решение было следующим: я активировал правильный профиль анаконды с помощью команды «source активировать datascience», где datascience — это мое имя env, и запустил внутри него свой код python (вне spyder)

Ошибка была следующей:

OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.
OMP: Hint: This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
[1] 58775 abort python ann.py

После того, как я спрятался в stackoverflow, я пришел со следующей директивой:

import os
os.environ[‘KMP_DUPLICATE_LIB_OK’]=’True’

Возможно, это не очень хорошее решение, но, по крайней мере, эта строка заставила мой код работать в spyder. Может быть, более правильным решением будет отключить запасные копии этой библиотеки, это нужно изучить позже.