如何解决Keras输入形状的定义-只能将元组而不是“ int”连接到元组
在完成本教程CartPole Neural Network之后,我正在尝试创建自己的版本。在教程代码本身中,在定义状态numpay数组时,replay
函数中存在python错误,其中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,240]
然后我想,我需要使用以下两行将其整形为一维数组,该数组的第零维为空:
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输入节点?
谢谢。
解决方法
np.zeros
在您定义的大小上创建一个NumPy零数组。
您正在尝试将batch_size与state_size连接起来,但是您可以这样做:
(self.batch_size,) + self.state_size
尝试删除括号和逗号:
state = np.zeros(self.batch_size + self.state_size)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。