本篇主要非常简略地总结一下学习内容和记录一些做编程作业学到的小点。
一、课程内容部分
主要是介绍神经网络一些基础的知识、约定习惯的符号标记等等。通过logistic regression和sigmoid激活函数、正向传播和反向传播、梯度下降和代价函数、向量化等等一系列计算,训练得到模型的参数(权重w和b)。
其中向量化的部分比较重要,对于提高模型训练效率非常有效:
对于第二周的单层神经网络和第三周的三层神经网络,以下解释为了方便记忆向量化的部分:
W和b是把行竖着叠成一列,如果是单层网络,输出层节点只有一个,那就是只有一行
A是把每帧图片的列结果横着排成一行,每列的每个点对应该层每个节点。比如说这一列就代表第[1]层第(2)张图,其中每个数对应一个节点。
二、编程作业部分
1、第二周编程作业
把输入x从图片的64*64*3展开成一列,用reshape,m个x向量化一起展开并且标准化(让像素值在[0,1]之间):
train_set_x = train_set_x_orig.reshape(train_set_x_orig.shape[0],-1).T / 255
参数-1就自己算需要多大,蛮方便的。输出大小为(m,12288)
标准化的目的就是为了防止数字太大,计算导致溢出。
2、第三周编程作业
(1)绘制散点图,yuanCruise的博客有参数详解
c=np.squeeze(Y)
(2)python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别:
简单说就是,np.multiply(),np.dot()对于矩阵和数组的效果一样,前者对应位置相乘,后者点积
*对于数组相当于np.multiply(),对于矩阵相当于np.dot()
待续……