Neural Networks and Deep Learning编程作业 (Week 2)

一. Python的numpy库

作业过程中需要注意的点:

1.字符串要用引号引起来

2.除法运算的分母有多项时要用括号括起来

一般情况下不会使用math库,因为输入大部分都是矩阵、向量等,用numpy库会更方便。

3.row vector行向量,Numpy与math的区别在于解决矩阵或向量问题,而非单个的实数等。

4.要注意写乘号,为不能直接写s(1-s),要写成s*(1-s),否则会报错ndarry不能callable.

5.存在问题:在这里把一张图片reshape成一个列向量,也就是说,把RGB三维向量,转成一维向量,image.shape[0]*image.shap[1]*image.shape[2],是一个3X5X4的向量

6.Normalizing rows:

np.linalg.norm,linalg=linear+algebra

norm(x, ord=None, axis=None, keepdims=False)

①ord=None:默认情况下,是求整体的矩阵元素平方和,再开根号。

②axis:处理类型

axis=1表示按行向量处理,求多个行向量的范数

axis=0表示按列向量处理,求多个列向量的范数

axis=None表示矩阵范数。

③keepding:是否保持矩阵的二维特性

True表示保持矩阵的二维特性,False相反。

如:

按照行进行求和然后求平方根的计算。

第一行:3^2+4^2=25,开根号就是5

第二行:2^2+6^2+4^2=4+36+16=56,开根号是根号下56.

二、Logistic Regression进行图片分类

1.步骤:

①初始化参数

②计算代价函数和梯度

③梯度下降进行优化

2.Python Imaging Library (PIL)有很多格式的图片,可用作测试集

numpy.squeeze(a,axis = None)

1)a表示输入的数组;

2)axis用于指定需要删除的维度,但是指定的维度必须为单维度,否则将会报错;

3)axis的取值可为None 或 int 或 tuple of ints, 可选。若axis为空,则删除所有单维度的条目;

4)返回值:数组

5) 不会修改原数组;

https://docs.scipy.org/doc/numpy/reference/generated/numpy.squeeze.html

3.具体操作步骤

①导入包

②问题称述回顾

导入数据,其中要注意的是np.squeeze()函数,如果不使用的话可能造成图片无法显示,即删除单维数据,弄成秩为1以上的数据。

预处理数据集的步骤:

  • 理清楚问题中数据的维度(训练集、测试集、相片的横纵像素等)
  • 重塑数据集的维度,每个例子的向量为(num_px * num_px * 3, 1)

       其中一个机智的做法是:

A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b∗∗c∗∗d, a) is to use:

X_flatten = X.reshape(X.shape[0], -1).T      # X.T is the transpose of X
  •  
  • 标准化数据

③学习算法的构建

使用logistic回归,原理如下:

 

用到的主要公式为:

第一步:定义函数

如:sigmoid函数

第二步:初始化参数

w = np.zeros((dim,1),dtype=np.int),注意当确定零矩阵的维度时,其中若有变量,则需要在后申明数据类型,如整型等。

用法:zeros(shape, dtype=float, order='C')

返回:返回来一个给定形状和类型的用0填充的数组;

参数:shape:形状

            dtype:数据类型,可选参数,默认numpy.float64

            dtype类型:t ,位域,如t4代表4位

                                 b,布尔值,true or false

                                 i,整数,如i8(64位)

                                u,无符号整数,u8(64位)

                                f,浮点数,f8(64位)

                               c,浮点负数,

                                o,对象,

                               s,a,字符串,s24

                               u,unicode,u24

            order:可选参数,c代表与c语言类似,行优先;F代表列优先

第三步:前后馈神经网络

注意在预测时对每个元素的写法,a[0,i]

猜你喜欢

转载自blog.csdn.net/weixin_38527856/article/details/86502265