首页 > 解决方案 > 在 Tensorflow 中恢复检查点后未初始化的权重

问题描述

我使用检查点使用以下代码保存模块的权重:

chkp_path = "./policies/deep_cfr"
checkpoint = tf.train.Checkpoint(model=deep_cfr_solver._policy_network)
checkpoint.write(chkp_path)

deep_cfr_solver._policy_network的子类在哪里tf.Module

之后我尝试在另一个函数中再次加载这个模块:

policy_network = simple_nets.MLP(input_size=4498, hidden_sizes=[8, 8], output_size=4)
new_checkpoint = tf.train.Checkpoint(model=policy_network)
new_checkpoint.restore("./policies/deep_cfr")

info = state.information_state_tensor(0)

tensor = tf.convert_to_tensor(info)
tensor = tf.reshape(tensor, shape=[1, tensor.shape[0]])
action_logits = policy_network(tensor)
action_probs = tf.nn.softmax(action_logits)
with tf.compat.v1.Session() as sess: print(action_probs.eval())

OpenSpielstate的 GameState 在哪里

但是此代码的最后一行导致以下错误:

发生异常:FailedPreconditionError Attempting to use uninitialized value mlp/weights [[node mlp/weights/read (defined at /open_spiel/open_spiel/python/simple_nets.py:48)]]

我使用的代码是基于这个文档

标签: pythonpython-3.xtensorflowreinforcement-learningpolicy

解决方案


推荐阅读