keras NN:在保持预测不变的同时修改输出层尺寸/使用值函数初始化值动作函数

时间:2019-04-14 21:10:31

标签: python keras reinforcement-learning

我训练了一个简单的顺序模型来估计强化学习程序中特定策略的价值函数。对于给定的状态,NN返回固定策略的一维值。 我想将此模型用作值操作函数的初始化,其中输入为相同状态,并为操作{a_1,...,a_N}返回N维向量。由于第一个网络是我的第一个猜测,因此我希望它为N个可能的操作(Q [s_t,a_1],Q [s_t,a_2])返回的值等于固定策略下的函数值(Q [s_t],在进一步训练之前),即Q [s_t] = Q [s_t,a_1] = Q [s_t,a_2]。

这是我的固定政策网络:

model = Sequential()
model.add(InputLayer(input_shape = (3))) #0,0: hour; 0,1: congestion
model.add(Dense(50, input_shape = input_shape, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(150, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

我试图通过

进行修改
model.pop()
model.add(Dense(3,activation='sigmoid'))
model.build()

但是,该函数仍然返回一维向量。

我也尝试过

new_model = Sequential()
new_model.add(InputLayer(input_shape = (3)))
new_model.add(model.layers[0])
new_model.add(model.layers[1])
new_model.add(model.layers[2])
new_model.add(Dense(3, activation='sigmoid'))

现在,我得到了一个3D数组,但其值与其他模型预测的值显着不同。

我缺少什么,或者有什么方法可以做得更好,例如通过旧模型的预测直接初始化新模型?感谢您的帮助!

0 个答案:

没有答案