TypeError:“Mul”Op 的输入“y”的类型为 float32,与参数“x”的类型 int32 不匹配
Posted
技术标签:
【中文标题】TypeError:“Mul”Op 的输入“y”的类型为 float32,与参数“x”的类型 int32 不匹配【英文标题】:TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int32 of argument 'x' 【发布时间】:2019-12-31 08:38:41 【问题描述】:在运行 tensorflow 时出现错误 TypeError: 'Mul' Op 的输入 'y' 的 float32 类型与参数 'x' 的 int32 类型不匹配。
我的代码是
import numpy as np
import pandas as pd
import tensorflow as tf
w = tf.Variable(0, dtype=tf.float32)
cost = tf.add(tf.add(w**2, tf.multiply(-10,w)), 25)
train = tf.train.GradientDescentOptimizer(0.001).minimize(cost)
init = tf.global_variables_initializer()
session = tf.session()
session.run(init)
session.run(w)
我正在运行 1.2.0 版 有很多这样的问题,但不是很好的答案。 你能解释一下什么是hapening吗?提前致谢。
【问题讨论】:
【参考方案1】:问题是您试图将一个整数(即 10)和一个浮点变量 (w) 相乘。 TensorFlow 需要输入类型匹配才能进行乘法运算。因此,请确保您对tf.multiply
和tf.add
的所有输入都是相同的类型。
换行,
cost = tf.add(tf.add(w**2, tf.multiply(-10,w)), 25)
到
cost = tf.add(tf.add(w**2, tf.multiply(-10.0,w)), 25.0)
【讨论】:
以上是关于TypeError:“Mul”Op 的输入“y”的类型为 float32,与参数“x”的类型 int32 不匹配的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: fit() 缺少 1 个必需的位置参数:'y',
TypeError: Input ‘filter‘ of ‘Conv2D‘ Op has type float32 that does not match type float64 of argume