【发布时间】:2019-12-08 05:10:30
【问题描述】:
文档https://keras.io/models/model/#predict 说model.predict 返回预测的 Numpy 数组。 在 Keras API 中,有没有办法区分这些数组中的哪一个? 在 TF 实现中呢?
在同一页文档的顶部,他们说“模型可以使用列表指定多个输入和输出”。相反,如果一个人通过字典,似乎什么都不会中断:
my_model = tf.keras.models.Model(inputs=my_inputs_dict, outputs=my_outputs_dict)
当调用 model.fit 时,相同的文档说“如果模型中的输入层被命名,您还可以传递一个字典,将输入名称映射到 Numpy 数组。”
如果my_output_dict 中的键或my_output_dict 中的字典值(层)的名称附加到my_model.predict(...) 的输出中,那就太好了
如果我将模型保存为 TensorFlow 的 saved_model 格式 protobuf,使用
tf.keras.model.save tf.serving API 以这种方式工作——使用命名的输入和输出......
【问题讨论】:
-
我怀疑答案可能只是“使用列表,而不是模型定义中的字典,并且输出的顺序与模型定义中的顺序相同。”如果是这种情况,我认为传递输入和输出的字典应该引发异常,除非隐含依赖此stackoverflow.com/questions/39980323/…
-
当我尝试将字典传递给
outputs参数时,我得到以下异常:ValueError: Output tensors to a Model must be the output of a Keras 'Layer'。我同意,如果此选项未记录在案,则应引发异常,否则输出将具有任意顺序。 -
@rvinas 您使用的是哪个 keras 版本?我已经尝试过 2.0.0-beta1 和 1.14 的 tf.keras 都没有抛出异常。
-
我使用的是 keras 2.2.4
-
Tensorflow.keras 有一个
dict的示例作为model.fit()的输入和输出:tensorflow.org/guide/keras/…。可悲的是,model.predict()没什么。我也更喜欢它。
标签: python tensorflow keras