值错误:模型输出"Tensor(" activation_1/标识:0 ", shape=(?, 3), dtype=float32)"具有无效的形状



我正在尝试运行以下用于股市预测的github代码:

https://github.com/multidqn/deep-q-trading

使用他们的说明,我在安装所需的库后运行以下程序:

python main.py 3 0 results_folder

然而,当我运行上述命令时,我会得到以下错误:

Using TensorFlow backend.
WARNING:tensorflow:From /Users/anisschohra/.local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:68: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.
WARNING:tensorflow:From /Users/anisschohra/.local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:508: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.
WARNING:tensorflow:From /Users/anisschohra/.local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py:3837: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.
Traceback (most recent call last):
File "main.py", line 92, in <module>
ensembleFolderName=sys.argv[3]
File "/Users/anisschohra/deep-q-trading/deepQTrading.py", line 68, in __init__
enable_double_dqn=True,enable_dueling_network=True)
File "/Users/anisschohra/.local/lib/python3.7/site-packages/rl/agents/dqn.py", line 107, in __init__
raise ValueError(f'Model output "{model.output}" has invalid shape. DQN expects a model that has one dimension for each action, in this case {self.nb_actions}.')
ValueError: Model output "Tensor("activation_1/Identity:0", shape=(?, 3), dtype=float32)" has invalid shape. DQN expects a model that has one dimension for each action, in this case 3.

你能帮我解决这个问题并成功运行代码吗?我已经查找了错误,但没有找到有效的解决方案。他们代码(main.py(中的模型架构如下:

model = Sequential()
model.add(Flatten(input_shape=(1,1,68)))
model.add(Dense(35,activation='linear'))
model.add(LeakyReLU(alpha=.001))
model.add(Dense(nb_actions))
model.add(Activation('linear'))

提前谢谢。

我和你也有同样的问题,我对RL不太熟悉,但我想我找到了原因。

if list(model.output.shape) != list((None, self.nb_actions)):
raise ValueError(f'Model output "{model.output}" has invalid shape. DQN expects a model that has one dimension for each action, in this case {self.nb_actions}.')

根据回溯,这就是导致问题的代码。你的模型的输出形状是一个张量对象,所以list(model.output.shape(会像[Dimension(None(,Dimension(3(],但list(((None,self.nb_actions((是[None,3],所以它会被判断为不同。

所以我认为,若有一种方法可以将模型输出的形状转换为numpy或list对象,我们就可以解决这个问题。对不起我英语不好!

相关内容

最新更新