将 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的主要内容,如果未能解决你的问题,请参考以下文章
Keras:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型列表)
尝试连接 keras 模型:ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)