吴恩达深度学习class2 week3 代码bug修正

本文通过解决TensorFlow中因数据类型不匹配导致的TypeError问题,介绍了如何使用tf.cast()函数来转换变量类型,确保运算顺利进行。同时,文章还提到了tf.add()函数的使用限制及替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class2 week3 3.11 practice

在本节课的视频中,吴恩达老师向我们展示了如何利用tensorflow框架进行简单的运算,其中有一段代码:

w = tf.Variable(0, dtype=tf.float32)
# cause we can not add more than 2 object with tf.add
# so we have to use double tf.add to realize it 
cost = tf.add(tf.add(w**2, tf.multiply(tf.cast(-10, tf.float32), w)), 25)
train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)


init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
print(sess.run(w))

运行时报错:

TypeError: Input 'y' of 'Mul' Op has type float32 that does not match type int32 of argument 'x'+

类似的错误还有

TypeError: Input 'b' of 'MatMul' Op has type float32 that does not match type float64 of argument 'a

其实就是tensorflow下的乘法不允许不同类型的数据相乘,比如w之前设定的是tf.float32,但是和他相乘的-10是int类型的,所以这里需要转换一下,就用到了一个函数:tf.cast()
将原代码种出错的部分改为:

cost = tf.add(tf.add(w**2, tf.multiply(tf.cast(-10, tf.float32), w)), 25)

另外还需要注意,tf.add()只能将两个对象相加,如果有三个对象,需要再一次调用tf.add()
当然,稍后,吴恩达老师又介绍了一种表达cost func的方法:
直接利用普通的加减运算,此时就不要再将对象处理成同类型的了
参考自:TypeError: Input ‘b’ of ‘MatMul’ Op has type float32 that does not match type float64 of argument 'a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值