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)
这句代码,就解决了这类问题。如下图。