吴恩达机器学习记录W1

Lab实操出现的报错

1、C1_W1_Lab04_Cost_function_Soln

运行代码如下:

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('./deeplearning.mplstyle')

报错:
在这里插入图片描述

TypeError: 
the 'package' argument is required to perform a relative import for './deeplearning'

这句话意思是要使用相对路径找到deeplearning.mplstyle这个文件时必须是包的形式。实际上,python只能用相对路径查找包或者模块,并不知道一个文件的相对路径,所以报错。

解决办法:
去掉所有代码里的./,改成plt.style.use('deeplearning.mplstyle')。具体做法是找到报错提示里所有文件的那句代码的位置。

2、C1_W1_Lab05_Gradient_Descent_Soln

在这里插入图片描述

解决:
	找了很多文章,没有完全对应这个错误的,只知道是因为int数据太大导致超过C语言的long类型上限。
	但看到[这篇文章](http://t.csdn.cn/RnIeo)后,有了思路:会不会是numpy中的数据类型和python、C语言的不一致导致的?因为我只引用了numpy和matplotlib这两个库。而且应该是要把某个数据类型的上限调大,才能相同。
	后来搜索numpy的类型转换,参考[文章](http://t.csdn.cn/FFo4Q),有了下面的测试。

	给出结论——使用numpy.int64(x),使数据类型为int32的x 变成 int64。

测试
在这里插入图片描述
结果还是报同样的错误,提示是36行出错。
在这里插入图片描述
根本原因就在于cost[i] = compute_cost(x_train, y_train, tmp_w, fix_b)
测试cost[i]和compute_cost()函数的返回值类型,分别添加了下面两行代码
在这里插入图片描述

在这里插入图片描述
测试结果为:
在这里插入图片描述
说明cost[]类型为numpy.int32,而成本函数返回值为int。这是两种不同的数据类型,因此需要转换。在源代码“lab_utils_uni.py”中,添加cost = np.int64(cost)这句代码,就解决了这类问题。如下图。
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值