将 KERAS 张量转换为 K.tf.int32

Posted

技术标签:

【中文标题】将 KERAS 张量转换为 K.tf.int32【英文标题】:Cast KERAS Tensor to K.tf.int32 【发布时间】:2018-12-02 05:27:12 【问题描述】:

这是来自自定义 Keras 回调 casted=K.cast((yPred), K.tf.int32)

我绝对需要将 yPred(张量)转换为 int32 类型(转换应用于张量内容,我知道)

不过,K.cast 只允许转换为浮动。

我该如何解决这个问题?

【问题讨论】:

K.tf?你试过简单的“int32”吗? 你也试过K.round吗? 很抱歉,它有效。 @DanielMöller K.round 可能会返回一个浮点数。如果它要返回一个 int,我们仍然无法使用它。 Keras 不允许您在损失函数中放置 Round 【参考方案1】:

如果您的后端是 Tensorflow,则转换为 int 将起作用。

Keras.backend 接口必须是所有可能的后端中最小的公分母。 TensorFlow 的 cast 支持 int。 CNTK,另一个可能的后端,不支持cast转int。

如果您始终计划使用 TensorFlow 作为 Keras 的后端,则转换为 int 将始终有效。

https://www.tensorflow.org/api_docs/python/tf/dtypes/cast

https://cntk.ai/pythondocs/cntk.ops.html

【讨论】:

【参考方案2】:

这就是你的做法:

casted = K.cast(yPred,"int32")

【讨论】:

正如你所说,即使我持怀疑态度,它也有效。 tensorflow.org/api_docs/python/tf/keras/backend/cast 不同意,这让我很惊讶....但我试了一下广告:Tensor("loss_2/dense_42_loss/Cast:0", shape=(?, 1), dtype=int32). . .谢谢! 答案是对的,但我的问题还没有说完。我们开始吧:***.com/questions/50994041/…。对于那些最终回答这个问题的人来说可能会很有趣

以上是关于将 KERAS 张量转换为 K.tf.int32的主要内容,如果未能解决你的问题,请参考以下文章

将 numpy 转换为张量(keras)(损失函数)

Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)

尝试连接 keras 模型:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组

如何将张量转换为 ndarray(内部带有对抗图像的张量)

将张量流模型转换为英特尔Movidius图的问题