我正在尝试拟合具有不同输出的深度神经网络模型,策略输出至多是向量,值输出至多是标量。我也想实施体验重播。这就是为什么我要在每个时期之后训练模型。
我不知道什么是最好的方法,但是在互联网上学习了一些教程之后,我想出了以下代码来训练模型(请注意,agent.brain是模型):
for epoch in range(agent.EPOCHS):
# running some code using the model.predict function
minibatch = random.sample(agent.memory, agent.BS)
for s, target_vector in minibatch:
agent.brain.fit(x = s, y = [target_vector, np.array([target_value])], epochs = 1)
输出形状:
policy_output (Dense) (None, 4098) 4724994 flatten_3[0][0]
__________________________________________________________________________________________________
value_output (Activation) (None, 1) 0 dense_4[0][0]
==================================================================================================
此代码:
print(s.shape)
print(target_vector.shape)
给我:
(1, 72, 8, 8)
(4098,)
target_value是一个整数。 但是我得到了错误:
ValueError: All target arrays (y) should have the same number of samples. Got array shapes: [(4098, 1), (1, 1)]
我还尝试使用{'policy_output' : target_vector, 'value_output' : np.array([target_value])}
您能帮助我了解我在做什么吗?