我正在尝试使用 TF-Agent TF-Agent DQN Tutorial训练强化学习代理。在我的应用程序中,我有 1 个动作,其中包含 9 个可能的离散值(标记为 0 到 8)。下面是输出env.action_spec()
BoundedTensorSpec(shape=(), dtype=tf.int64, name='action', minimum=array(0, dtype=int64), maximum=array(8, dtype=int64))
Run Code Online (Sandbox Code Playgroud)
我想得到概率向量包含所有由训练策略计算的动作,并在其他应用环境中做进一步处理。但是,该策略仅返回log_probability
一个值,而不是所有操作的向量。反正有没有得到概率向量?
from tf_agents.networks import q_network
from tf_agents.agents.dqn import dqn_agent
q_net = q_network.QNetwork(
env.observation_spec(),
env.action_spec(),
fc_layer_params=(32,)
)
optimizer = tf.compat.v1.train.AdamOptimizer(learning_rate=0.001)
my_agent = dqn_agent.DqnAgent(
env.time_step_spec(),
env.action_spec(),
q_network=q_net,
epsilon_greedy=epsilon,
optimizer=optimizer,
emit_log_probability=True,
td_errors_loss_fn=common.element_wise_squared_loss,
train_step_counter=global_step)
my_agent.initialize()
... # training
tf_policy_saver = policy_saver.PolicySaver(my_agent.policy)
tf_policy_saver.save('./policy_dir/')
# making decision using the trained policy
action_step = my_agent.policy.action(time_step)
Run Code Online (Sandbox Code Playgroud)
在dqn_agent.DqnAgent()
DQNAgent 中,我设置了emit_log_probability=True
,它应该定义Whether policies …
python reinforcement-learning tensorflow2.0 tensorflow-agents