【发布时间】:2020-09-21 10:56:21
【问题描述】:
按照本教程CartPole Neural Network,我正在尝试创建自己的版本。在教程代码本身中,replay 函数中有一个 python 错误,当像这样定义状态 numpay 数组时,batch_size 是 32,state_size 是 4(帧)* 160(像素高度)+ 240(像素宽度):
state = np.zeros((self.batch_size,) + self.state_size)
抛出错误
can only concatenate tuple (not "int") to tuple
然后按照教程填充 state 变量:
for i in range(len(minibatch)):
state[i] = minibatch[i][0]
这是我的困惑:
这个state 变量的正确形状是什么,因为教程的初始声明np.zeros 行不正确?我尝试提供一个形状为 (32,4,160,240) 的 numpy 数组,即 32 个单独的输入数组。导致此错误:
ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 153600 but received input with shape [32, 4, 160, 240]
然后我想,我需要使用以下 2 行将其重塑为一个零维为空的一维数组:
state = np.reshape(state, (4 * 160 * 240 ))
state = np.expand_dims(state, axis=0)
但是,这给我带来了错误
ValueError: cannot reshape array of size 4915200 into shape (153600,)
TLDR:这个 np.zeros((shape) + int) 调用的目的是什么,为什么它对我来说失败了,输入 numpy 数组的预期形状是什么,总共有 32 个批次样本153600个输入节点?
谢谢。
【问题讨论】:
-
更新:根据 predict 方法 API,输入可以是“或数组列表(如果模型有多个输入)”。所以我创建了一个空列表并将批次附加到它上面,这导致了这个错误:ValueError:层顺序需要1个输入,但它接收到32个输入张量。收到的输入:[
, ,