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.multiplytf.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 不匹配的主要内容,如果未能解决你的问题,请参考以下文章

华为机试真题 C++ 实现仿 LISP 运算

TypeError: fit() 缺少 1 个必需的位置参数:'y',

Web前端面试题:写一个mul函数

用户定义的 __mul__ 方法不可交换

TypeError: Input ‘filter‘ of ‘Conv2D‘ Op has type float32 that does not match type float64 of argume

python学习笔记 -- reduce合并减少