吴恩达深度学习课程 Class 1 Week 2 assignment2_2 学习记录

       本系列会记录萌新博主学习吴恩达深度学习课程中踩过的各种坑,希望对和我一样的萌新起到借鉴的作用,有错误或不完善的地方还请大佬指正。

1. 注意reshape的使用

       reshape操作是按一定顺序的,default情况下使用C模式,即最后一个维度变化最快。所以直接reshape和reshape再转置得到的结果是不一样的,但如果一个np.array只有一个维度不为1,其他维度都为1,这时两种情况的结果相同。

详细参考:numpy中reshape方法详解_zhanggonglalala的博客-CSDN博客_np.reshapehttps://blog.csdn.net/zhanggonglalala/article/details/79356653

train_set_x_flatten_1 = train_set_x_orig.reshape(-1, train_set_x_orig.shape[0])

train_set_x_flatten_2 = train_set_x_orig.reshape(train_set_x_orig.shape[0], -1).T

train_set_x_flatten_1 != train_set_x_flatten_2

------------------------------------------------------------------------------------------

train_set_x_flatten_1 = train_set_x_orig.reshape(-1, 1)

train_set_x_flatten_2 = train_set_x_orig.reshape(1, -1).T

train_set_x_flatten_1 == train_set_x_flatten_2

2. 一些被废弃的函数

       scipy库中很多旧版本的函数已经无法使用了,可以使用相同功能的其他函数代替,网上资料很多。

3. 课程提供的代码基于jupyter notebook, 如果使用其他IDE的话,查看图像时需要加上plt.show()命令,注意plt.show()后面的程序需要关掉图片才能继续运行。

4. 把迭代次数设置低一些可以减轻过拟合,比如将迭代次数设置为900后,train set accuracy适当降低,test set accuracy有所提高。

5. 注意输入图像的格式

       在我进行最后一步,即识别自己的图片时, 出现下图所示报错:

       这是因为输入的图片为png格式,或由png格式转的jpg格式。

       jpg一共有RGB三个通道,而png有RGBA(最后一个通道表示透明度)四个通道,因此按原来的代码运行会出错。

       只需使用.convert("RGB")进行转化,非常方便。(由于提供的函数aborted了用不了我这里的读取方式已经改成了Image.open)

image_raw = Image.open(fname).convert("RGB")
image = np.array(image_raw)

6. 输入数据的标准化

       作业中提到了对输入图像进行标准化,标准化可概括为:减均值,再除以标准差。标准化可以加快训练时的收敛速度, 以及使输入的各个维度“影响”相近,并消除量纲的影响。输入为图像时一种比较方便简便的做法是把矩阵除以255,作业里使用的就是这种方法。

       可能会有人比较好奇,如果不除以255会怎么样,试验的时候要记得,下面的这种sigmoid函数写法会报错,当x比较大时会溢出(我也不懂什么原理。。)。

s = 1 / (1 + np.exp(-x))

要想跑通的话可以换成:

s = .5 * (1 + np.tanh(.5 * x))

你可能感兴趣的:(python,pycharm,jupyter)