#python #python-3.x #tensorflow #matplotlib
#python #python-3.x #tensorflow #matplotlib
Вопрос:
Я работаю с кодом из Tensorflow учебника для начинающих mnist (код ниже).
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
Поскольку после оценки модели учебное пособие останавливается, я добавил несколько строк для выполнения реальных прогнозов.
predictions = model.predict([x_test])
print(np.argmax(predictions[0]))
Пока все работает. Однако я хотел бы увидеть изображение, которое модель пытается предсказать, чтобы знать, что происходит. Поэтому я попробовал следующее:
import matplotlib.pyplot as plt
plt.imshow(x_test[0])
plt.show()
Это не работает. Я не получаю сообщение об ошибке, оно просто не показывает изображение. Кроме того, если я попытаюсь добавить простой оператор печати после кода matplotlib, который также игнорируется и не будет напечатан. Есть идеи, что происходит?
Ответ №1:
Вы сообщаете, что .show()
не работает должным образом с вашей текущей конфигурацией. Вместо вызова этого вы можете предпочесть это:
plt.savefig('plot.png')
Вы можете использовать это с безголовым драйвером, если хотите:
import matplotlib
matplotlib.use('Agg')
Комментарии:
1. К сожалению, результат тот же. Это очень странно. Matplotlib отлично работает как с вашим решением, так и с plt.show(), если я удалю сегмент кода «предсказания» (в моем коде выше). В противном случае я ничего не получаю, ни ошибки, ни изображения. Я предполагаю, что программа выходит из строя, поскольку она не выполняет никакого другого кода либо ниже инструкций matplotlib. Я также заметил в консоли, что число в «In [3]: runfile»… возвращается к 1, когда я запускаю свой код. Однако, если я сохраню сегмент кода прогнозирования без matplotlib, все тоже будет в порядке..
2. Хм, может быть, графический процессор необходимо перезагрузить между использованием его для моделирования и использованием для отображения изображения? В любом случае вы захотите узнать, где происходит сбой. Попробуйте:
$ gdb python mnist.py
, затемrun
иbt
для обратной трассировки.3. Когда я запустил его через терминал, я получил это: OMP: Ошибка # 15: инициализация libiomp5.dylib, но обнаружил, что libiomp5.dylib уже инициализирован.
4. Что ж, это проливает свет, теперь мы приближаемся к основной причине. Проблема, по-видимому, заключается в установке нескольких копий / версий библиотеки. Согласно github.com/dmlc/xgboost/issues/1715 выполнение
uninstall
может быть полезным. Такжеconda install nomkl
может быть актуальным.5. Спасибо! Я нашел решение по вашей ссылке, и теперь оно работает нормально. По-видимому, это проблема с Mac OS. Нужно просто добавить следующие два утверждения в код, чтобы переопределить ошибку: import os os.environ[‘KMP_DUPLICATE_LIB_OK’]=’True’