Стабильные базовые планы не работают с тензорным потоком

Поэтому я недавно вернулся к машинному обучению и решил начать курс Kaggle для ConnectX (https://www.kaggle.com/learn/intro-to-game-ai-and-reinforcement-learning). Я пытаюсь провести урок 4, в котором я использую stable-baselines + Tensorflow для создания ИИ. Проблема в том, что я не могу правильно использовать стабильные базовые линии, поскольку это сразу же выдает ошибку, когда я пытаюсь импортировать ее. Вот сообщение об ошибке:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-13-f5986851ce81> in <module>
      1 import os
----> 2 from stable_baselines.bench import Monitor
      3 from stable_baselines.common.vec_env import DummyVecEnv
      4 
      5 # Create directory for logging training information

~\Anaconda3\lib\site-packages\stable_baselines\__init__.py in <module>
----> 1 from stable_baselines.a2c import A2C
      2 from stable_baselines.acer import ACER
      3 from stable_baselines.acktr import ACKTR
      4 from stable_baselines.deepq import DQN
      5 from stable_baselines.her import HER

~\Anaconda3\lib\site-packages\stable_baselines\a2c\__init__.py in <module>
----> 1 from stable_baselines.a2c.a2c import A2C

~\Anaconda3\lib\site-packages\stable_baselines\a2c\a2c.py in <module>
      5 import tensorflow as tf
      6 
----> 7 from stable_baselines import logger
      8 from stable_baselines.common import explained_variance, tf_util, ActorCriticRLModel, SetVerbosity, TensorboardWriter
      9 from stable_baselines.common.policies import ActorCriticPolicy, RecurrentActorCriticPolicy

~\Anaconda3\lib\site-packages\stable_baselines\logger.py in <module>
     15 from tensorflow.python.util import compat
     16 
---> 17 from stable_baselines.common.misc_util import mpi_rank_or_zero
     18 
     19 DEBUG = 10

~\Anaconda3\lib\site-packages\stable_baselines\common\__init__.py in <module>
      2 from stable_baselines.common.console_util import fmt_row, fmt_item, colorize
      3 from stable_baselines.common.dataset import Dataset
----> 4 from stable_baselines.common.math_util import discount, discount_with_boundaries, explained_variance, \
      5     explained_variance_2d, flatten_arrays, unflatten_vector
      6 from stable_baselines.common.misc_util import zipsame, set_global_seeds, boolean_flag

~\Anaconda3\lib\site-packages\stable_baselines\common\math_util.py in <module>
      1 import numpy as np
----> 2 import scipy.signal
      3 
      4 
      5 def safe_mean(arr):

~\Anaconda3\lib\site-packages\scipy\signal\__init__.py in <module>
    287 
    288 """
--> 289 from . import sigtools, windows
    290 from .waveforms import *
    291 from ._max_len_seq import max_len_seq

~\Anaconda3\lib\site-packages\scipy\signal\windows\__init__.py in <module>
     39 """
     40 
---> 41 from .windows import *
     42 
     43 __all__ = ['boxcar', 'triang', 'parzen', 'bohman', 'blackman', 'nuttall',

~\Anaconda3\lib\site-packages\scipy\signal\windows\windows.py in <module>
      5 
      6 import numpy as np
----> 7 from scipy import linalg, special, fft as sp_fft
      8 
      9 __all__ = ['boxcar', 'triang', 'parzen', 'bohman', 'blackman', 'nuttall',

~\Anaconda3\lib\site-packages\scipy\special\__init__.py in <module>
    631 from .sf_error import SpecialFunctionWarning, SpecialFunctionError
    632 
--> 633 from . import _ufuncs
    634 from ._ufuncs import *
    635 

ImportError: DLL load failed: The specified module could not be found.

Похоже, что-то не так с scipy, но я понятия не имею, что я могу сделать, чтобы это исправить. Эта ошибка возникает, даже если я запускаю import stable_baselines. Вот код, который я запускаю для создания виртуальной среды (кстати, это в PowerShell b / c, это то, что мне дает Jupyter Lab):

python -m venv myenv
.\myenv\Scripts\Activate.ps1
pip install stable-baselines

ПРИМЕЧАНИЕ. Я не знаю, имеет ли это какое-либо значение, но когда я устанавливаю stable-baselines, появляется ошибка: ERROR: gym 0.17.2 has requirement cloudpickle<1.4.0,>=1.2.0, but you'll have cloudpickle 1.5.0 which is incompatible.

PS: Я обнаружил ту же проблему здесь, но я понятия не имею, как они это исправили. Ответ просто говорит, что я использовал анаконду, но в анаконде нет пакета stable-baselines! Я попытался установить tenorflow из anaconda и stable-baselines из pip, но он все равно дал ту же ошибку.

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ: Похоже, эта проблема связана с . импортом и действительна только для jupyter notebook (не имеет ничего общего с tensorflow - она ​​отлично работает в Python CLI). Я объяснил это в своем новом вопросе о opencv здесь.

~ Аюш


person megargayu    schedule 05.07.2020    source источник


Ответы (2)


Сайт стабильных базовых версий утверждает, что еще не поддерживает tf2.X. Так что это может быть твоей проблемой

Попробуйте следующее,

pip install tensorflow==1.14.0
pip install stable-baselines[mpi]==2.10.0

Кажется, они работают вместе для меня по сей день (4 сентября 2020 г.).

Я знаю, что это может быть немного поздно, но я нашел ваш вопрос сейчас и решил ответить на него как можно лучше. Удачи!

person CS101    schedule 04.09.2020

Если вы ищете специально для TF2 версию Stable Baselines, проверьте одну из этих (экспериментальных) вилок:

В качестве альтернативы попробуйте Stable Baselines 3 (в настоящее время находится в стадии бета-тестирования), который основан на PyTorch вместо Tensorflow и предназначен для замены текущей версии SB2 на основе TF1:

person Marcin Wojnarski    schedule 14.10.2020