python - DQNAgent 不能将批量大小超过 1
问题描述
当我尝试训练一个 batch_size 大于 1 的代理时,它给了我一个例外。我的问题在哪里?
lr = 1e-3
window_length = 1
emb_size = 10
look_back = 6
# "Expert" (regular dqn) model architecture
inp = Input(shape=(look_back,))
emb = Embedding(input_dim=env.action_space.n+1, output_dim = emb_size)(inp)
rnn = Bidirectional(LSTM(5))(emb)
out = Dense(env.action_space.n, activation='softmax')(rnn)
expert_model = Model(inputs = inp, outputs = out)
expert_model.compile(loss='categorical_crossentropy', optimizer= Adam(lr))
print(expert_model.summary())
# memory
memory = PrioritizedMemory(limit=1000000, window_length=window_length)
# policy
policy = BoltzmannQPolicy()
# agent
dqn = DQNAgent(model=expert_model, nb_actions=env.action_space.n, policy=policy, memory=memory,
enable_double_dqn=False, enable_dueling_network=False, gamma=.9, batch_size = 100, #Here
target_model_update=1e-2, processor = RecoProcessor())
我直接从 keras-rl 的代码打印一些值,它给了我这个输出:
State[array([0., 0., 0., 0., 0., 0.])]
Batch: [[[0. 0. 0. 0. 0. 0.]]]
但也有这个例外:
ValueError: Error when checking input: expected input_1 to have 2 dimensions, but got array with shape (1, 1, 6)
我可以把处理器类的代码放上来,我认为这就是关键,但首先我要确保这里没有任何问题。
解决方案
推荐阅读
- java - 找不到 com.google.android.gms:play-services-base Project React Native Maps 所需
- r - 对列执行分组以计算 R 中另一列的出现次数
- java - FireStore 数据未显示访问隐藏方法 Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V(灰名单,链接,允许)
- java - Java 在多维递归中发现“污点”
- python - Python/机器学习中的模式识别问题
- python - 尝试使用 python 将 pyspark 安装到带有机器学习服务的 SQL Server 实例中失败
- flutter - Flutter 中的 AsyncLoader 两次取数据
- javascript - 在 setTimeout 中找不到 this.showBox
- perl - 在数组的每个元素中映射一个字符串并在 perl 中分配另一个数组
- html - 使用内联 CSS 更改所有子元素样式