Keras序列模型没有维度不匹配



我用Keras创建了一个输入为4、输出为8的顺序神经网络。我意识到我所做的是不正确的,但我不确定为什么代码没有抛出错误。

print(X.shape)    # Prints (64, 4)
print(y.shape)    # Prints (64, 64, 8)
self.model.fit(X, y, batch_size=MINIBATCH_SIZE, verbose=0, shuffle=False)

那么,为什么Keras接受数组的数组呢?难道它不应该只接受一个数组吗?

编辑:我的模型就是这样创建的

model = Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=(4,)))
model.add(Dense(64))
model.add(Dense(Env.ACTION_SPACE, activation='linear'))             # Env.ACTION_SPACE = 8
model.compile(loss="mse", optimizer='adam', metrics=['accuracy'])

它们大多是mariz计算,然后通过函数扩展或减少维度,但在最后一层,您可以falttern、softmax或结论为您想要的形状。您可以从训练批次或预测中看到,它返回一组输出,其中您看到的批次号大于1,或预测打印以查看输出结果,其中它们是您从np.max或软件或连接网络中搜索的多个答案堆栈。

我从这个例子中看到你的评论

next_act = mainQ_outputs.evaluate(x=input_image, batch_size=16, max_queue_size=10, workers=16 )

或者您也可以执行

predictions = model.predict(obs, batch_size=32)

样本输出:

### ( 1 ): Q-Networks
model = models.Sequential()         
for layer in mainQ_outputs: 
model.add(layer)
model.add(tf.keras.layers.Flatten() )
model.add(tf.keras.layers.Dense(6, activation=tf.nn.softmax))
### ( 2 ): predictions[0] - predictions[31]
action = np.argmax(predictions[0])  
action = actions_name[action]
...

目标移动预测(1(

目标移动预测(2(

最新更新