代码之家  ›  专栏  ›  技术社区  ›  Pedro Borges

将稳定基线tensorflow模型转换为tensorflowjs

  •  0
  • Pedro Borges  · 技术社区  · 7 年前

    我正试图从 stable-baselines 到 tensorflowjs 以便能够在浏览器上使用模型。但我不能让转换工作

    我跟着 this github issue 要使用代码创建必要的tensorflow文件,请执行以下操作:

    def generate_checkpoint_from_model(model, checkpoint_name):  
            tf.saved_model.simple_save(model.sess, checkpoint_name, inputs={"obs": model.act_model.obs_ph}, outputs={"action": model.action_ph})
    

    然后我尝试使用 tensorflowjs_converter

    tensorflowjs_converter --input_format=tf_saved_model test/ web_test
    

    但是,它给了我以下错误:

    Unable to lift tensor <tf.Tensor 'loss/action_ph:0' shape=(?,) dtype=int32> because it depends transitively on placeholder <tf.Operation 'loss/action_ph' type=Placeholder> via at least one path, e.g.: loss/action_ph (Placeholder)
    

    我创造了如下 colab notebook 你可以试试看。

    有人知道如何使这个转换工作吗?

    谢谢你的帮助

    0 回复  |  直到 7 年前
        1
  •  1
  •   Pedro Borges    7 年前

    我把这个问题作为 issue in stable-baselines 他们回答说。我将在此抄送以供参考:

    您正在尝试保存PPO培训中使用的操作占位符 (PPO代理的一部分),但为了推断,您只需要 策略及其占位符( model.act_model ). colab上的代码运行 通过将调用更改为 simple_save 对此:

    tf.saved_model.simple_save(model.sess, checkpoint_name, inputs={"obs": model.act_model.obs_ph}, outputs={"action": model.act_model._policy_proba})

    保险单的价值 depends on the environment/algorithm.