Tensorflow TypeError: 'Switch' Op 的输入 'pred' 的类型 float32 与预期的 bool 类型不匹配

Yu Chen

我目前正在使用 Tensorflow 构建深度神经网络,并在实现称为 dropout 的正则化技术时遇到了一些问题(请在此处查看Geoffrey Hinton 的原始论文)。

Tensorflow 有一个功能可以解决这个问题,我正在学习Aurelien Geron 的书Hands-On Machine Learning with Scikit-Learn & Tensorflow 的教程(顺便说一下,这太不可思议了)。在其中,他实现 dropout 的示例代码包括声明一个training占位符:

training = tf.placeholder(tf.float32, shape = (), name = "training")

然后创建隐藏层 dropout 对象:

hidden1_drop = tf.layers.dropout(hidden1, dropout_rate, training = training)

但是,当我执行此操作时,我收到指向上述行的错误。

TypeError: Input 'pred' of 'Switch' Op has type float32 that does not match expected type of bool

我查看了有关dropout 的 Tensorflow 文档tf.layers.dropout()方法的training参数定义为

要么是 Python 布尔值,要么是 TensorFlow 布尔值标量张量(例如占位符)。是否以训练模式(应用 dropout)或推理模式返回输出(返回原封不动的输入)。

但是,在上面的代码中,我清楚地传入了tf.float32. 我怀疑这是我的错误的原因 - 它甚至在错误消息本身中有所说明。那么这仅仅是作者的错别字,还是我不了解幕后发生的事情?

我应该用这一行替换隐藏层声明吗?

hidden1_drop = tf.layers.dropout(hidden1, dropout_rate, training = True)

我还查看了其他类似错误的SO帖子,例如这个,但答案似乎表明该错误源于过时的 Tensorflow 版本,事实并非如此 - 我最近才在我的机器上安装了几周前。

Yu Chen

我会继续回答我自己的问题,因为我是个白痴。

作者没有打错字。我按照他的教程打了一个错字。training可以是 Python 布尔值或 Tensorflow 布尔张量。在书中,作者的实际代码是

training = tf.placeholder_with_default(False, shape=())

进行此切换应该可以解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

'Equal' Op 的输入 'y' 的类型 bool 与参数 'x' 的 float32 类型不匹配

Word2Vec教程:Tensorflow TypeError:输入“ Mul”的“ y” Op的类型为float32,与参数“ x”的int32类型不匹配

TypeError:“ ReadFile”操作的输入“ filename”的类型为float32,与预期的字符串类型不匹配

在Tensorflow tf.nn.nce_loss中获取TypeError:'Mul'Op的输入'y'具有类型float32与参数'x'的int32类型不匹配

'MatMul' Op 的输入 'b' 的类型 float32 与参数 'a' 的类型 float64 不匹配

TypeError:'MatMul'Op的输入'b'具有类型float32与参数'a'的int32类型不匹配-即使在转换后

如何修复MatMul Op的float64类型与float32 TypeError类型不匹配?

TypeError:“ MatMul”操作的输入“ b”的类型为float32,与参数“ a”的int32类型不匹配

TypeError:“ Mul”操作的输入“ y”的类型为float32,与参数“ x”的int64类型不匹配

TensorFlow TypeError:传递给参数输入的值的数据类型为uint8不在允许值列表中:float16,float32

“ TypeError:“ ResourceApplyAdagradDA”操作的输入“ global_step”的类型为int32的类型与预期的int64类型不匹配。” 这是什么错误?

TensorFlow非渴望模式下的float32测试类型

类型错误:预期为 float32,而是得到了类型为 'str' 的 'auto'

Tensorflow Slim:TypeError:预期为int32,获取的列表包含类型为'_Message'的Tensor

TypeError:Fetch参数的类型类型为float32,必须为字符串或Tensor

无法将预期类型“ [Integer]”与实际类型“ Bool”匹配

haskell无法将预期类型与实际类型“ Bool”匹配

类型不匹配:预期为Integer但为Float

类型不匹配。预期为i32,找到()

Go中的uint32和bool类型不匹配

类型不匹配:推断的类型是但预期

类型推断失败。预期类型不匹配

预期类型与收到的类型不匹配

TypeError:“ float32”类型的对象不可JSON序列化

参数值与预期类型不匹配

休眠:参数值与预期类型不匹配?

JPA + Hibernate currentTimestamp() 与预期类型不匹配

Array() 与预期类型“对象”不匹配

错误:参数值与预期类型不匹配