После понижения версии Tensorflow 2.0 до 1.5 результаты изменились, и воспроизведение результатов недоступно

Не могли бы вы помочь мне добиться воспроизводимых результатов с помощью Tensorflow 1.15 без перезапуска ядра Python. И почему выходные результаты в TF 2.0 и TF 1.5 разные при абсолютно идентичных параметрах и наборе данных? Можно ли добиться идентичного результата?

Подробнее: Я пытался интерпретировать результаты модели в TF 2.0 следующим образом:

import shap
background = df3.iloc[np.random.choice(df3.shape[0], 100, replace=False)]
explainer = shap.DeepExplainer(model,  background)

Я получил ошибку:

`get_session` is not available when using TensorFlow 2.0.`get_session` is not available when using TensorFlow 2.0.

Согласно теме SO, я попытался настроить совместимость TF 2.0 с TF 1, используя перед моим кодом:

import tensorflow.compat.v1 as tf

Но ошибка появилась снова. Следуя совету многих пользователей, я понизил TF2 до TF 1.15, это решило проблему, и модуль shap интерпретирует результаты, но: 1) чтобы сделать результаты воспроизводимыми, теперь мне нужно изменить tf.random.set_seed(7) на tf.random.set_random_seed(7) и каждый раз перезапускать ядро ​​Python! В TF2 перезапускать ядро ​​не пришлось. 2) изменены результаты прогноза, в частности, экономическая эффективность (то есть TF1.5. Ошибочно классифицирует более важные образцы, чем TF2.0).

TF 2: точность: 94,95%, экономическая эффективность = 64%

TF 1: точность: 94,85%, экономическая эффективность = 56%

Код модели здесь

1 ответ

Во-первых, результаты отличаются друг от друга не только в версиях TF1 и TF2, но и в версиях TF2.0 и TF2.2. Наверное, это зависит от разных внутренних параметров в упаковках.

Во-вторых, TensorFlow2 работает с DeepExplainer в следующих версиях:

import tensorflow
import pandas as pd
import keras
import xgboost
import numpy
import shap
print(tensorflow.__version__)
print(pd.__version__)
print(keras.__version__)
print(xgboost.__version__)
print(numpy.__version__)
print(shap.__version__) 

выход:

2.2.0
0.24.2
2.3.1
0.90
1.17.5
0.35.0

Но вы столкнетесь с некоторыми трудностями при обновлении библиотек.

В Python 3.5 при запуске TF2.2 вы столкнетесь с ошибкой "Ошибка загрузки DLL: указанный модуль не найден". Это на 100% можно решить, установив более новый пакет C++. Смотрите это:https://github.com/tensorflow/tensorflow/issues/22794 Ссылка для загрузки пакета:https://support.microsoft.com/ru-ru/help/2977003/the-latest-supported-visual-c-downloads

В Python 3.7 вы не найдете версию shap 0.35.0 с расширением whl. Только расширение tar.gz, которое выдает ошибку: "Установить пакет Visual C++". Но установка не помогает. Затем скачайте shap 0.35.0 для Python 3.7 здесь: https://anaconda.org/conda-forge/shap/files. Запустите оболочку Anaconda. Введите: conda install -c conda-forge C:\shap-0.35.0-py37h3bbf574_0.tar.bz2.

Другие вопросы по тегам