我正在尝试设置我的环境,以便使用TF Agent训练深度Q网络。然而,我遇到了一堆导入错误,似乎无法解决。我在这里学习的教程需要以下软件包:
tf-agents[reverb]
pyvirtualdisplay
imageio==2.4.0
pyglet
然后他们发表了以下重要声明:
from __future__ import absolute_import, division, print_function
import base64
import imageio
import IPython
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import PIL.Image
import pyvirtualdisplay
import reverb
import tensorflow as tf
from tf_agents.agents.dqn import dqn_agent
from tf_agents.drivers import py_driver
from tf_agents.environments import suite_gym
from tf_agents.environments import tf_py_environment
from tf_agents.eval import metric_utils
from tf_agents.metrics import tf_metrics
from tf_agents.networks import sequential
from tf_agents.policies import py_tf_eager_policy
from tf_agents.policies import random_tf_policy
from tf_agents.replay_buffers import reverb_replay_buffer
from tf_agents.replay_buffers import reverb_utils
from tf_agents.trajectories import trajectory
from tf_agents.specs import tensor_spec
from tf_agents.utils import common
我在Windows操作系统上使用python 3.9.6在虚拟环境中工作。在安装了上面的包(使用pip-install(并运行了上面的代码之后,我缺少了这些模块(ModuleNotFound
(:matplotlib、reverb和tensorflow。我为matplotlib运行了另一个pip安装,它修复了这个问题。然而,混响和tensorflow并不简单。我为混响(pip install reverb
(运行了一个单独的pip安装,但现在我在import reverb
上得到了以下错误:
Cell In [3], line 11
import reverb
File c:...envlibsite-packagesreverb.py:64
raise TypeError, 'Regexp cannot be negated'
^
SyntaxError: invalid syntax
同样,当我运行一个单独的pip install tensorflow
时,我遇到了:
WARNING:tensorflow:Please fix your imports. Module tensorflow.python.training.tracking.base has been moved to tensorflow.python.trackable.base. The old module will be deleted in version 2.11.
(traceback)
ImportError: cannot import name 'network' from 'tensorflow.python.keras.engine' (c:...envlibsite-packagestensorflowpythonkerasengine__init__.py)
我猜这个导入错误是因为tf代理在中安装了自己版本的tensorflow/env/,但我不明白为什么python不能导入它们。有人对如何解决这些依赖性问题有什么建议吗?这样我就可以运行笔记本了?有没有我应该省略的进口,或者换一种方式?我的pip安装有问题吗?欢迎提出任何建议。
Reverb在Windows上不工作(仅限Linux(https://github.com/deepmind/reverb
您需要使用不同的重播缓冲区。tf-agents
包含用于其自己的重放缓冲器的tf-agents.replay_buffers
类。