【问题标题】:Keras on Google ML Engine error: You must feed a value for placeholder tensorGoogle ML Engine 上的 Keras 错误:您必须为占位符张量提供一个值
【发布时间】:2019-02-08 14:28:04
【问题描述】:

我已经在 Google Cloud ML Engine 上部署了一个模型,但是当我尝试执行预测时(我正在使用 curl),我得到的结果是:

{"error": "Prediction failed: Error during model execution: AbortionError(code=StatusCode.INVALID_ARGUMENT, details=\"You must feed a value for placeholder tensor 'lstm_1/keras_learning_phase' with dtype bool\n\t [[Node: lstm_1/keras_learning_phase = Placeholder[dtype=DT_BOOL, shape=[], _device=\"/job:localhost/replica:0/task:0/device:CPU:0\"]()]]\")"}

我该如何设置这个占位符张量的值?它在json上吗?这是训练期间必须做的事情吗?正如许多建议所说,我尝试设置 K.set_learning_phase(0) 但没有用。

【问题讨论】:

    标签: tensorflow machine-learning keras neural-network google-cloud-ml


    【解决方案1】:

    让我猜猜 - 你的模型有批量标准化层,对吧? :)

    正如许多建议所说,我尝试设置 K.set_learning_phase(0) 但没有用。

    确实 - 几天前我碰巧遇到了同样的问题;解决办法是设置

    K.set_learning_phase(0)
    

    初始化(或加载)您的模型之前 - 如果您稍后在脚本中执行此操作,上述错误会不断弹出...

    【讨论】:

    • 那么,你的意思是在训练期间,对吗?我会尝试并报告我的结果。我的“快速修复”是从我的图层中删除辍学。谢谢
    • @user3276768 我的意思是在 inference 期间(否则,您的 keras_learning_phase 应该是 1,而不是 0)。
    • 据我了解,您无法修改 Google ML Engine 执行预测的方式。这是一项服务,您只需在其中上传保存的模型,其余的工作都会为您完成。所以我无法修改底层代码。
    • @user3276768 那么,正如您在帖子中所说,您是如何设置K.set_learning_phase(0) 的?
    • 我在训练脚本中设置的,显然是错误的。
    猜你喜欢
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 2019-04-25
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多