我正在处理一个深度强化学习问题,需要反馈给代理的状态包含在一个二进制数向量中。你知道吗
列表如下所示:
[7.0, 1.0, 1.0, 0.0, 1.0, 5.0, 0.0, 1.0, 0.0, 1.0,
7.0, 1.0, 1.0, 0.0, 1.0, 6.0, 1.0, 0.0, 1.0, 0.0]
然而,我的问题的每一个完整的状态每5次迭代就包含一次。样本数据的完整状态示例如下:
[[7. 1. 1. 0. 1.]]
[[5. 0. 1. 0. 1.]]
[[7. 1. 1. 0. 1.]]
[[6. 1. 0. 1. 0.]]
我尝试过创建一个解析器函数,类似于滑动窗口,它应该每5次迭代捕获5个值。你知道吗
def getState(data, timestep, window):
parser_start = timestep - window + 1
block = data[parser_start:timestep + 5] if parser_start >= 0 else data[0:timestep + 5] # pad with t0
res = []
for i in range(window - 1):
res.append(block[i])
return np.array([res])
然后实现到类型的for循环中:
window_size = 5
for t in range(10):
next_state = getState(data, t + 4, window_size + 1)
print(next_state)
但是,运行循环时得到的结果是:
[[7. 1. 1. 0. 1.]]
[[1. 1. 0. 1. 5.]]
[[1. 0. 1. 5. 0.]]
[[0. 1. 5. 0. 1.]]
[[1. 5. 0. 1. 0.]]
[[5. 0. 1. 0. 1.]]
[[0. 1. 0. 1. 7.]]
[[1. 0. 1. 7. 1.]]
[[0. 1. 7. 1. 1.]]
[[1. 7. 1. 1. 0.]]
它似乎附加了一个滑动窗口1,而不是5。我已经试了好几个星期了,但找不到问题出在哪里。你知道吗
你们有什么新想法吗?你知道吗
窗口大小应一致
相关问题 更多 >
编程相关推荐